error LNK2001错误, 典型的错误提示有: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex 下面介绍解决的方法: 1. Windows 子系统设置错误, 提示: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Windows 项目要使用 Windows 子系统, 而不是 Console, 可以这样设置: [Project] --> [Settings] --> 选择"Link"属性页, 在 Project Options 中将/subsystem:console 改成/subsystem:windows 2. Console 子系统设置错误, 提示: LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 控制台项目要使用 Console 子系统, 而不
是 Windows, 设置: [Project] --> [Settings] --> 选择"Link"属性页, 在 Project Options 中将/subsystem:windows 改成/subsystem:console 3. 程序入口设置错误, 提示: msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 通常, MFC 项目的程序入口函数是 WinMain, 如果编译项目的 Unicode 版本, 程序入口必须改 为 wWinMainCRTStartup, 所以需要重新设置程序入口: [Project] --> [Settings] --> 选择"C/C++"属性页, 在 Category 中选择 Output, 再在 Entry-point symbol 中填入 wWinMainCRTStartup, 即可 4. 线程运行时库设置错误, 提示: nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex 这是因为 MFC 要使用多线程时库, 需要更改设置: [Project] --> [Settings] --> 选择"C/C++"属性页, 在 Category 中选择 Code Generation, 再在 Use run-time library 中选择 Debug Multithreaded 或者 multithreaded 其中, Single-Threaded 单线程静态链接库(release 版本) Multithreaded 多线程静态链接库(release 版本) multithreaded DLL 多线程动态链接库(release 版本) Debug Single-Threaded 单线程静态链接库(debug 版本) Debug Multithreaded 多线程静态链接库(debug 版本) Debug Multithreaded DLL 多线程动态