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

提示出现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版本: 调试阶段使用

(0)

相关推荐

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

    提示出现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: unre

  • 腾讯微博提示missing parameter errorcode 102 错误的解决方法

    本文实例讲述了腾讯微博提示missing parameter errorcode 102 错误的解决方法.分享给大家供大家参考.具体分析如下: 今天在调试腾讯微博接口时,出现一个错误,找了网上都没有相关资料,最后自己调通了,故发布此文,避免各位phper重复造轮子. 错误信息,代码如下: 复制代码 代码如下: stdClass Object (     [data] =>      [detailerrinfo] => stdClass Object         (            

  • Android Listview 滑动过程中提示图片重复错乱的原因及解决方法

    主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的view).listview通过adapter的getview函数获得每行的item.滑动过程中, a.如果某行item已经划出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b.获取滑入屏幕的行item之前会先判断缓存中是否有可用的it

  • Linux执行可执行文件提示No such file or directory的解决方法

    最近在使用Linux操作系统执行一个可执行文件,结果出现了No such file or directory的提示,表示很疑惑. ./tshrf bash: ./tshref: No such file or directory 查看文件信息,可以看到文件是存在的,并且是可以执行的. -rwxr-xr-x 1 yuan yuan 20581 4月 29 2004 tshref 查阅资料后,原因是系统位数与该可执行文件需要的lib库位数不匹配. 用uname命令打印系统信息,发现系统是64位系统

  • destoon会员注册提示“数据校验失败(2)”解决方法

    很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:"数据校验失败(2)"的错误提示,严重影响用户的使用.现将解决方法公布如下: 从destoon的后台进入module/member/register.inc.php 在register.inc.php文件中找到: if($submit){ 将其下的 if($action != crypt_action('register')) dalert($L['check_sign'].'(1)'); 注释掉:

  • phpmyadmin提示The mbstring extension is missing的解决方法

    本文较为详细的分析了phpmyadmin提示The mbstring extension is missing的解决方案,分享给大家供大家参考.具体方法如下: 一.问题: phpmyadmin提示:The mbstring extension is missing. Please check your PHP configuration. 二.解决方法: 其实只要运行一段: 复制代码 代码如下: yum install php-mbstring 就OK了,收工. 如果用的是linux的话,可能是

  • node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法

    在使用npm install安装扩展插件时,系统提示"npm install Error: ENOENT, stat 'C:Users<用户名>AppDataRoamingnpm'". 以前都是很顺利的安装过程,没出现这种情况.我这里的解决办法是直接创建上面提示的目录就好了,应该是node.js权限不够,在此备注. 有时候就是这样,很可能一个很久都无法解决的问题,实际解决方法很简单,就是这么任性!!

  • IIS打开提示MMC无法创建管理单元的解决方法

    安装完IIS后,是否发现管理工具中没有"Internet 信息服务"这项? 没有关系,可以去C:\WINDOWS\system32\inetsrv 中直接点击IIS.msc直接启动. 你可能在启动窗口中发现错误码提示"mmc无法创建管理单元" 你是否"google"了很多网页仍然解决不了问题?那恭喜你又找到了一个解决方法,这个方法是爬树的朱朱成功解决这个故障后写下的. 1,查看c:/windows/temp/是否存在,最好可以给与该目录every

  • Ubuntu VMware出现提示No 3D support is available的解决方法

    像我这样的Ubuntu脑残粉,电脑上只安装了Ubuntu,但是有时又必须得使用Windows,于是就装了一个Windows虚拟机,使用的是VMware,问题出在默认设置下启动虚拟机无法启动3D硬件加速,下面看看如何解决. 通常情况下,你会看到下面这个图 解决方法 查看驱动是否正确安装,使用sudo lshw -C display ,如果能够正常识别显卡,说明驱动没有问题.尝试修改虚拟机的 *.vmx 文件,在文件的最后添加mks.gl.allowBlacklistedDrivers = "TRU

  • IIS提示出现RPC服务器不可用的解决方法

    依次点击"管理工具→服务→Remote Procedure Call→属性",其默认启动类别是"自动",但选项是灰色的(不可用状态),点击标签"登录",将硬件配置文件服务禁用,重新启动系统. 方法一:修改注册表 运行注册表编辑器,打开HKEY_LOCAL_MACHINEsystemCurrentControl-SetServicesRpcSs分支,将Start项的值由"4"修改为"2",即把启动类型设为自动

随机推荐