Visual Studio 2019中WinMain程序LNK2019未解析外部符号_main错误求助
修复Visual Studio 2019中WinMain引发的LNK2019错误
问题场景
使用Visual Studio 2019空项目模板创建Windows桌面应用,仅包含以下代码:
//main.cpp #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { MessageBox(NULL, L"Goodman", L"Saul", 0); return 0; }
构建时抛出LNK2019错误:
unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
已尝试修改子系统但未解决。
解决步骤
1. 正确配置链接器子系统
- 右键项目 → 属性 → 配置属性 → 链接器 → 系统
- 在子系统下拉菜单中选择Windows (/SUBSYSTEM:WINDOWS)
- 注意:需确保当前选中的配置(Debug/Release)和平台(x86/x64)与你正在构建的目标一致,避免只修改单个配置而未同步其他项。
2. 手动指定入口点(若子系统配置后仍报错)
- 继续在链接器设置中切换到高级选项卡
- 在入口点输入框中填写
_WinMain@16(WinMain采用stdcall调用约定,编译器会生成该修饰名),或直接填写WinMain(Visual Studio通常能自动识别,但手动指定可避免识别异常)
3. 确认WinMain函数声明正确性
- 确保函数声明为
int WINAPI WinMain(...),WINAPI宏不可省略——它会将函数设置为stdcall调用约定,保证链接器能匹配到正确的函数符号。
内容的提问来源于stack exchange,提问作者44a3
相关产品推荐
相关产品推荐

