VC中的一些错误解决

1. 【错误提示】: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main  
【说 明】: Windows项目要使用Windows子系统, 而不是Console  
【解决方法】:[Project] --> [Settings] --> 选择"Link"属性页, 
在Project Options中将/subsystem:console改成/subsystem:windows 

 2. 【错误提示】: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 多线程动态链接库(debug版本) 
单线程: 不需要多线程调用时, 多用在DOS环境下 
多线程: 可以并发运行 
静态库: 直接将库与程序Link, 可以脱离MFC库运行 
动态库: 需要相应的DLL动态库, 程序才能运行 
release版本: 正式发布时使用 
debug版本: 调试阶段使用

 5. 【错误提示】:Compiling... ,Error spawning cl.exe 
【说 明】:这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正
的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相
应的路径下找到这个应用程序。
【解决方法】:“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”
重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。
6. 【错误提示】:nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv 
【说 明】:
【解决方法】:在Preprocessor中定义_AFXDLL
 7. 【错误提示】:fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds 
【说 明】:
【解决方法】:/C++->Code Generation->Multithread DLL (即实现/MD选项) 
8. LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library
解决办法:
PROJECT->SETING->LINK->INPUT->IGNORE LIB...->MSVCRT.LIB

9.

今天在编译一个使用ACE库的程序时, 程序在Release下编译通过,出现link错误
nafxcw.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(viewedit.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
Release/Charge.dll : fatal error LNK1120: 3 unresolved externals

经过一番研究, 原来是程序MFC库的连接方式问题, 因为我编译ACE是使用的MFC动态连接, 而程序是使用的静态连接MFC,所以会产生以上错误, 把MFC选项改为: Use Mfc In a Shared DLL后问题解决

 

可能所有编译出现这个错误的问题都是MFC连接方式引起的。

10.

我写程序很少发布过,都是写完了给领导同事,他把我的代码拷到他的工程上,去发布。最近发布个,编译的时候竟然出现了这样的错误

error RC2151 : cannot reuse string constants, 61446(0xF006) - "(##########,##########)" already defined. Cannot add 61446(0xF006) - "一未命名文件".

搜索了下,原来是是在发布的时候,使用Release版本,Static library编译时,MFC中afxres.h中61446已竟被使用,出现同一ID被两次使用。

所以,将自己写的那段资源ID改成比61446大些问题就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值