13
2026
04

haxe-openfl编译成exe

用haxe openfl库开发应用,打包成exe。

用hashlink打包,没什么问题,haxelib run openfl build windows -hl -aot -32 -release

直接打包成exe,各种报错。haxelib run openfl build windows

用的minimingw,试过用mingw64和mingw32,该报错还是报错,并没有区别.

pcre2-8和pcre2-16报错,提示需要c99。

可以改这个库里边的build.xml,添加编译参数,如图:

<compilerflag value="-std=c99" />


Thread.cpp里边报错。

好像是加了这个。

<define name="HXCPP_WINXP_COMPAT" />

寄存器报错,加下边这个,据说是因为GC那里用汇编写了代码,不支持,所以不用汇编写的优化代码就可以了。

<haxedef name="HXCPP_NO_GC_REGISTERS" />

<haxedef name="HXCPP_M32" />

 <haxedef name="HXCPP_X86" />

<haxedef name="HXCPP_NO_X86_64" />

Process.cpp报错,直接改这里:

返回的时候,强制转int。


ApplicationMain.o链接报错,其实是因为ApplicationMain.rc没有生成ApplicationMain.o

可以手动生成。

E:\gitee\lianxi\haxe\experiment\Export\windows\obj> g++.exe -c -Wno-overflow -O2 -DHXCPP_VISIT_ALLOCS -DHX_SMART_STRINGS -DHXCPP_API_LEVEL=430 -DHXCPP_WINXP_COMPAT -DHX_WINDOWS -m32 -ID:/HaxeToolkit/haxe/lib/hxcpp/4,3,2/include ./ApplicationMain.rc -oE:/gitee/lianxi/haxe/experiment/Export/windows/obj/obj/mingw-nc/20eab515_ApplicationMain.o

g++.exe: warning: ./ApplicationMain.rc: linker input file unused because linking not done

这个没有生成。

E:\gitee\lianxi\haxe\experiment\Export\windows\obj>windres.exe -i ./ApplicationMain.rc -o "E:/gitee/lianxi/haxe/experiment/Export/windows/obj/obj/mingw-nc/20eab515_ApplicationMain.o" -I "D:/HaxeToolkit/haxe/lib/minimingw/1,0,0/include" -I "D:/HaxeToolkit/haxe/lib/vs_build/1,0,0/include" --include-dir="D:/HaxeToolkit/haxe/lib/hxcpp/4,3,2/include" -DHXCPP_WINXP_COMPAT -DHX_WINDOWS -DHXCPP_API_LEVEL=430

这个可以生成。手动调用windres.exe

需要加环境变量或者全路径执行这个exe,ApplicationMain.rc里边include了一个h文件,没有,从其他地方复制一个过来。

或者不生成,不链接这个。rc是什么可以搜索或者问AI。注释掉这两处就行。

最后strip报错的话,关掉杀毒软件,或者不要strip,命令行里边是-Dno-strip

<haxedef name="no-strip"/>


生成的exe在bin里边,缺少两个dll,从obj里边复制过去。


最后还是运行不起来。

家里电脑是Shader报错,公司电脑运行没任何反应。

可以win+x,然后“事件查看器”,windows日志,应用程序,查看错误。


折腾好几天,还不如直接用hashlink打包。



« 上一篇

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。