这篇文章主要用来记录使用Visual Studio过程中,出现的各种error,并提供自己当时解决的方案。
但是,一个error可能由不同原因引起的,文中案例仅供大家参考。
-
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
解决:将工程设置为Using MFC in static library -
cannot open file "mfc42u.lib"
解决:安装vc时没有安装Unicode版本(默认是不安装的),可以下载几个库文件copy到vc98/MFC/Lib,或者build选择非Unicode版本编译(也可以在Set Configuation中配置Unicode相关删除) -
fatal error RC1107: invalid usage; use RC /? for Help
解决:查看vc++目录是否有问题
<1>将附加额外目录暂时移至工程末尾
<2>把其中的反斜线(/)替换为双反斜线(//)或者替换为斜线 -
LINK : fatal error LNK1000: Internal error during IncrBuildImage
解决:<1> 项目(Project)->属性(Property)->链接器(Linker)->常规(General) 下面的“启用增量链接(Enable Incremental Linking)”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)。
<2> 选择项目,属性(Property pages)->配置属性(Configuration Properties) ->C/C++,修改“调试信息格式(Debug Information Format)”为“程序数据库(Program Database(/Zi))”即可。 -
LINK1123:failure during conversion to COFF:file invalid or corrup
解决:将C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe目录下的cvtres.exe文件用C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe代替 -
error c2064:项不会计算为接受1个参数的函数
解决:可能是运算符乘号未写 -
error c2228:"Grade"左边必须有类/结构/联合
解决:不一定是左边的类结构问题,前一语句缺少“;”也会导致这个错误。 -
error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
解决:vc6.0运行没问题,vs2005之后默认Unicode字符集,可将其改为Muti-bye。 -
error LNK2019:无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
解决:建错工程了,应该是win32 application(window应用程序)
win32 application和win32 Console Application区别:
win32 application就是普通的常见的窗口应用程序
win32 Console Application就是MS-DOS窗口(命令提示符) -
error C4996:'sprintf':This fuction or variable may be unsafe
解决:将‘sprintf’改为‘sprintf_s’,或添加#define _CRT_SECURE_NO_WARNINGS,警告就不会再有了。
很多函数不进行参数检测(越界类等...),微软担心使用这些会造成内存异常,所以就改写了同样的功能的函数,改写的函数进