使用x86_64-w64-mingw32-gcc编译Godot 3.x GDNative模块为UWP DLL的问题
UWP环境下编译Godot 3.x GDNative模块的问题解决
mingw-w64中没有和MSVC /ZW 完全对应的编译选项,但可以通过指定UWP专用的编译目标和参数来生成符合UWP要求的动态库,而非普通Win32 DLL:
使用UWP专用的MinGW工具链
普通的x86_64-w64-mingw32-gcc默认针对传统Win32平台编译,需要改用UWP交叉编译工具链(部分MinGW发行版会提供命名如x86_64-w64-mingw32-uwp-gcc的工具,若没有则需自行编译带UWP支持的MinGW)。添加UWP编译宏与链接参数
编译时必须指定以下参数适配UWP受限环境:- 宏定义:
-D_WIN32_WINNT=0x0A00(指定目标Windows 10版本)、-DWINAPI_FAMILY=WINAPI_FAMILY_APP(限制API为UWP允许的子集) - 链接选项:
-lruntimeobject(链接WinRT运行时库,对应MSVC/ZW启用的WinRT支持)
- 宏定义:
验证编译产物
编译完成后,可通过objdump -x [你的DLL文件]检查PE头的子系统字段,UWP DLL的子系统应为Windows Store App,而非普通Win32的Windows GUI或Windows Console。适配Godot 3.x的GDNative配置
在.gdnlib配置文件中,需单独为UWP平台指定编译好的DLL路径,同时注意Godot 3.x对UWP GDNative的限制:不能调用UWP禁止的传统Win32 API,仅可使用WinRT API或Godot提供的跨平台接口。
内容的提问来源于stack exchange,提问作者user237251
相关产品推荐
相关产品推荐

