VC++时经常会遇到链接错误LNK2001:常见的有
解决外部符号错误:_main,_WinMain@16,__beginthreadex -!t'my`yK
主要是在创建 MFC 的程序时,如果没有新建 MFC 的工程,而是手动连接时,会出现好多错误,会很无语的:
error LNK2001错误
1.libcmtd.lib(crt0.obj) : error LNK2001: unresolvedexternal symbol _main
2.LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved externalsymbol WinMAin@16
3.msvcrtd.lib(crtexew.obj) : error LNK2001: unresolvedexternal symbol WinMain@16
4.nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolvedexternal symbol __beginthreadex
5.nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolvedexternal symbol __endthreadex
解决 1 :
[Project] --> [Settings] -->选择"Link"属性页,
在ProjectOptions中将/subsystem:console改成/subsystem:windows
解决 2 :
[Project] --> [Settings] -->选择"Link"属性页,
在ProjectOptions中将/subsystem:windows改成/subsystem:console
解决 3:
[Project] --> [Settings] -->选择"Link"属性页,
在Category中选择Output,
再在Entry-point symbol中填入wWinMainCRTStartup
解决 4:( 这两个是 线程问题 )
[Project] --> [Settings] -->选择"C/C++"属性页,
在Category中选择Code Generation,
再在Use run-time library中选择DebugMultithreaded或者multithreaded
具体解释:::
Single-Threaded 单线程静态链接库(release版本)
Multithreaded 多线程静态链接库(release版本)
multithreadedDLL 多线程动态链接库(release版本)
DebugSingle-Threaded 单线程静态链接库(debug版本)
DebugMultithreaded 多线程静态链接库(debug版本)
Debug MultithreadedDLL 多线程动态链接库(debug版本)
单线程: 不需要多线程调用时, 多用在DOS环境下
多线程: 可以并发运行
静态库: 直接将库与程序Link, 可以脱离MFC库运行
动态库: 需要相应的DLL动态库, 程序才能运行
release版本: 正式发布时使用
debug版本: 调试阶段使用
参照往上很多资料!
特别感谢!