欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

VC外部符号错误_main,_WinMain@16,__beginthreadex解决方法

时间:2020-11-06 09:58:19|栏目:C代码|点击:

本文实例讲述了VC外部符号错误_main,_WinMain@16,__beginthreadex解决方法。分享给大家供大家参考。具体如下:

在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数,就会在编译时产生很多连接错误, 如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 n

1. Windows子系统设置错误, 提示:

libcmtd.lib(crt0.obj) : error LNK2001: unresolved
external symbol _main

Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:

[Project] ?C> [Settings] ?C> 选择”Link”属性页,
在Project Options中将/subsystem:console改成/subsystem:windows 

2. Console子系统设置错误, 提示:

LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved
external symbol _WinMain@16

控制台项目要使用Console子系统, 而不是Windows, 设置:

[Project] ?C> [Settings] ?C> 选择”Link”属性页,

在Project Options中将/subsystem:windows改成/subsystem:console

3. 程序入口设置错误,

提示:

msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16

通常, MFC项目的程序入口函数是WinMain,
如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口:

[Project] ?C> [Settings] ?C> 选择”Link”属性页,
在Category中选择Output,

再在Entry-point symbol中填入wWinMainCRTStartup, 即可

4. 线程运行时库设置错误, 提示:

@:
kAF n
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol
__beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved
external symbol __endthreadex

这是因为MFC要使用多线程时库, 需要更改设置:

[Project] ?C> [Settings] ?C> 选择”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  多线程动态链接库(debug版本)

单线程: 不需要多线程调用时, 多用在DOS环境下
多线程: 可以并发运行
静态库: 直接将库与程序Link, 可以脱离MFC库运行

动态库: 需要相应的DLL动态库, 程序才能运行
release版本: 正式发布时使用
debug版本: 调试阶段使用 

希望本文所述对大家的VC程序设计有所帮助。

上一篇:C++堆排序算法实例详解

栏    目:C代码

下一篇:C++ 开发之实现操作符重载的实例

本文标题:VC外部符号错误_main,_WinMain@16,__beginthreadex解决方法

本文地址:http://www.codeinn.net/misctech/19580.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有