提示出现unresolved external symbol _main的解决方法

2016-02-19 10:52 8 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的提示出现unresolved external symbol _main的解决方法懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

提示出现unresolved external symbol _main搜了下找了下原因如下
在创建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





下面介绍解决的方法:

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] -- 选择"Link"属性页,

在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 多线程动态链接库(debug版本)

单线程: 不需要多线程调用时, 多用在DOS环境下

多线程: 可以并发运行

静态库: 直接将库与程序Link, 可以脱离MFC库运行

动态库: 需要相应的DLL动态库, 程序才能运行

release版本: 正式发布时使用

debug版本: 调试阶段使用

来源:http://www.tulaoshi.com/n/20160219/1595986.html

延伸阅读
第一种方法: 第一步:打开ie浏览器。 第二步:在菜单栏打开工具,点击Internet选项。 第三步:切换到高级,在设置里面勾选两个禁用脚本,点击确定。 第二种方法: 第一步:在电脑桌面点击开始,打开运行。 ...
标签: 电脑入门
很多朋友在使用UC的时候都经常遇到UC提示视频设备被占用的提示 ,(造成这样的原因有很多,主要是因为您使用了多个UC客户端上的视频功能所导致的,总之还是因为您的操作所导致的) 首先您必须退出UC,然后从机器上拔下您的摄像头USB插头,然后重新插上去,启动您的UC看一下是不是已经恢复了呢 ~ 补充: 1。视频已经调节好,在名字后面也有...
标签: 电脑入门
电脑开机进入系统然后出现了Verifying DMI Pool Data的提示,到这里电脑就启动不了了,那么现在就给你讲讲电脑开机提示Verifying DMI Pool Data的解决方法吧。 这里所说的DMI就是桌面管理桌面的意思,就是当电脑启动的时候就必须要对DMI进行校验,如果在检验过程中出现数据出错或者硬件故障的话,就会自动跳到对机器进入检测将数据写入bios芯...
could not read column value from result set :某某字段(birthday) 出现了这样的错误,反复对照,映射文件没问题,字段没问题。 问题在哪呢?测试了下,如果birthday是String 类型的,没问题。如果是Date类型的。出错,其实原因很简单了,把记录中birthday字段的默认值0000 00-00-00...
标签: windows10
win10开机出现黑屏的解决方法   自动win10系统发布以来,无论是win7还是win8用户都抢险升级到了win10系统,不过有很多win10系统用户表示开机电脑出现黑屏的问题,我们可首先排查电脑硬件是否存在故障,当在保证电脑硬件正常时,我们可着手查找系统中存在的问题,其实大多情况下,造成win10开机黑屏是因为用户开启了电脑锁,我们只需要...

经验教程

827

收藏

79
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部