只有 wWinMain MSVC 2019 的链接器错误无法解析外部符号
Posted
技术标签:
【中文标题】只有 wWinMain MSVC 2019 的链接器错误无法解析外部符号【英文标题】:Linker error unresolved external symbol with only wWinMain MSVC 2019 【发布时间】:2019-07-06 17:31:22 【问题描述】:这是我唯一的代码:
#include <windows.h>
int APIENTRY wWinMain(
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR pCmdLine,
_In_ int nCmdShow)
OutputDebugStringA("Hello\n");
return 0;
具有完全相同签名的 wWinMain 函数在我使用“Windows 桌面应用程序”(或其他)模板创建的单独项目中工作。
但是我收到了一个带有以下信息的 LNK2019:
unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
来自MSVCRTD.lib(exe_main.obj)
我在 Windows 10 上使用带有 MSVC 2019 的 Visual Studio 2019 社区版。我创建了一个“空项目”,并且在“源文件”目录中只有一个“main.cpp”文件。
谁能帮我尝试诊断这里可能出了什么问题?我没有运气阅读 msdn/在网上搜索解决方案,这非常令人沮丧,因为我只是想在这里起步。
谢谢。
【问题讨论】:
【参考方案1】:在链接器设置中将子系统设置为 Windows(适用于所有配置和目标)。
Visual Studio 可以针对不同的 Windows subsystems 进行编译,每个都需要自己的程序入口点。错误提示“_main not found
”表明您的子系统设置为控制台,因为链接器正在寻找main()
函数。
如果你有一个WinMain()
入口点(或wWinMain()
用于Unicode 模式),这意味着你的目标是Windows 子系统。
【讨论】:
以上是关于只有 wWinMain MSVC 2019 的链接器错误无法解析外部符号的主要内容,如果未能解决你的问题,请参考以下文章
Win32程序的入口啥时候是WinMain,啥时候是wWinMain?有啥不同