Visual Studio 2022 CLR空项目出现LINK2001/LINK1120错误,求C++入口点
解决Visual Studio 2022 C++项目LINK2001/LINK1120入口点错误
先确认项目类型与子系统配置
C++程序的入口点和项目子系统强绑定,先做基础检查:
- 右键项目 → 属性 → 配置属性 → 链接器 → 系统 → 子系统
- 若为Windows (/SUBSYSTEM:WINDOWS):对应桌面应用,默认入口点是
WinMain(非Unicode)或_tWinMain/wWinMain(Unicode) - 若为控制台 (/SUBSYSTEM:CONSOLE):对应控制台程序,默认入口点是
main(非Unicode)或_tmain/wmain(Unicode)
- 若为Windows (/SUBSYSTEM:WINDOWS):对应桌面应用,默认入口点是
手动指定入口点的正确值(仅当自动匹配失效时)
如果需要在「链接器>高级」里手动设置入口点,对应值如下:
- Windows子系统:
- 非Unicode项目:
WinMainCRTStartup - Unicode项目:
_tWinMainCRTStartup或wWinMainCRTStartup
- 非Unicode项目:
- 控制台子系统:
- 非Unicode项目:
mainCRTStartup - Unicode项目:
_tmainCRTStartup或wmainCRTStartup
- 非Unicode项目:
检查代码中的入口函数
确保代码里存在对应子系统的入口函数,比如Windows子系统的示例代码:
#include <windows.h> // 非Unicode版本 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 浏览器初始化逻辑 return 0; } // Unicode版本(需包含<tchar.h>) int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // 浏览器初始化逻辑 return 0; }
常见误区
- 不要盲目修改入口点,优先保证子系统配置和代码中的入口函数匹配,手动指定是最后手段
- 若为MFC项目,入口点由框架自动提供,无需自行编写,需确保项目类型为「MFC应用程序」且配置正确
内容的提问来源于stack exchange,提问作者user25910489
相关产品推荐
相关产品推荐

