用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打包。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。