使用Meson编译WinAPI版Hello-World程序失败求助
解决Meson构建Windows GUI程序的链接错误问题
问题根源
你的代码使用WinMain作为入口函数(Windows GUI程序标准入口),但Meson默认会将可执行文件标记为控制台子系统程序:
- 链接器会强制寻找
main函数作为入口,因此抛出LNK2019未定义符号错误 - 默认链接参数包含
/SUBSYSTEM:CONSOLE,不符合GUI程序的要求
解决方案
修改meson.build,添加gui_app : true选项,明确告诉Meson这是一个Windows GUI应用:
project('slim', 'c', version : '0.1', default_options : ['warning_level=3']) exe = executable('slim', 'slim.c', install : true, gui_app : true # 核心配置:标记为GUI应用 ) test('basic', exe)
配置说明
gui_app : true会自动完成两项关键操作:
- 将链接器参数中的
/SUBSYSTEM:CONSOLE替换为/SUBSYSTEM:WINDOWS - 告知MSVC编译器使用
WinMain作为程序入口,不再寻找main函数 - 自动链接GUI程序所需的系统库(包括
user32.lib),无需手动指定
验证步骤
- 删除旧的构建目录:
rmdir /s builddir - 重新初始化构建环境:
meson setup builddir - 执行编译:
meson compile -C builddir
内容的提问来源于stack exchange,提问作者Sul W
相关产品推荐
相关产品推荐

