在上手vs写代码,搞工程的阶段,总会遇到各种各样的编译错误,链接错误,而每个错误都有一个编码,做好总结,以后可以帮助我们更好更快地定位问题,解决问题
1. error LNK2019: 无法解析的外部符号 __FUN2@8,该符号在函数 "public: static void __cdecl xxx::FUN1(struct HWND__ *,struct HRGN__ *,bool,bool)" (?DrawAero@OMDraw@@SAXPAUHWND__@@PAUHRGN__@@_N2@Z) 中被引用
这是一个链接错误,也就是在FUN1函数中调用了FUN2函数,编译器找了FUN1函数的声明,但是链接器没有找到FUN2函数的定义,所以就是一个无法解析的外部符号。__FUN2@8这样的一个形式是VS特有的C++的函数名称重整。
2. error LNK2011: 映像可能不能运行 D:xxxx.lib(yyyy.obj)
3.error LNK1104: 无法打开文件“C:\Users\admin\Desktop\xxxx\Build\Lib\Debug\xxx.lib”
链接错误: 导入该lib文件发生错误,很有可能是在该文件路径下不存在xxx.lib文件,小概率情况是xxx.lib损坏了(本人被坑过)
4. error C2440: “初始化”: 无法从“const char [37]”转换为“int”
数据类型不同,不能赋值,如字面意思
5.error C2664: “std::string FUNC(const unsigned char *,int)”: 无法将参数 1 从“const char *”转换为“const unsigned char *”
类型不一样,又无法隐式类型转换,只能自己通过显式的强制类型转换了。
error C2664: “BOOL MakeSureDirectoryPathExists(LPCTSTR)”: 无法将参数 1 从“std::string”转换为“LPCTSTR”
LPCTSTR其实就是const char *(字符数组),string重载了赋值和拷贝构造函数。但是无法让string直接转成char数组。
6. error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version.
Please #define _AFXDLL or do not use /MD[d] d:\software\vs_2013\vc\atlmfc\include\afx.h 24 1 APITest
在VS新建的win32项目中要想使用MFC的东西,就会报改错。解决方法不记得了。
7.error C2679: 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
vs小技巧:
vs自动对齐: 1, ctrl+a 2, ctrl+k 3, ctrl+f