基于空白C++ Windows模板创建D3D12项目遇LNK2019错误求助
解决LNK2019: 未解析的外部符号main问题(Windows D3D12项目)
你的链接错误核心原因是项目入口点配置不匹配,以下是具体排查和解决步骤:
1. 修正项目子系统设置
Visual Studio中,右键项目 → 属性 → 链接器 → 系统 → 子系统,确保选择Windows (/SUBSYSTEM:WINDOWS)。
- 若选的是
Console (/SUBSYSTEM:CONSOLE),链接器会默认寻找main函数作为入口,而你的代码用的是Windows程序专属的WinMain,因此触发未解析符号错误。
2. 强制指定入口点(可选)
如果子系统设置正确仍报错,可在代码开头添加编译指令,强制链接器使用WinMain入口:
#pragma comment(linker, "/ENTRY:WinMainCRTStartup")
3. 检查预处理器宏定义
进入项目属性 → C/C++ → 预处理器 → 预处理器定义:
- 移除
_CONSOLE宏(如果存在) - 添加
_WINDOWS宏(确保编译器识别这是Windows应用而非控制台应用)
额外代码问题修正
你的代码还有两个影响运行的问题:
- 缺少窗口显示逻辑:创建窗口后需调用
ShowWindow和UpdateWindow才能显示:if (inVT.has_value()) { HWND hWnd = inVT.value(); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); std::cout << hWnd; } - 无效的死循环:替换成标准Windows消息循环,否则窗口无法响应消息:
MSG msg = {}; while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam;
内容的提问来源于stack exchange,提问作者luckyGryfindor
相关产品推荐
相关产品推荐

