在VS中开发程序的时候遇到一个问题,应该算是比较常见,所以记录下。
在编译程序的时候遇到一个错误,大致提示如下:
“error LNK2019: 无法解析的外部符号……”
遇到这个错误一般是因为存在以下三种情况:
1、引用别人编译好的库,这个时候一般是引入头文件后,没有将lib文件导进工程中,所以需要在VS的工程属性设置中将lib文件加到工程里;
2、自己写的.h/.cpp文件,但是没有将.h/.cpp加到工程中,而是在某些其他.h/.cpp文件中包含了头文件,这个时候就需要右键工程,添加现有项,将包含的.h/.cpp都加到工程中;
3、第三种是自己写的.h/.c文件,也加到工程里了,但是还是报错了,注意这里是.h/.c,而我们的工程里是cpp来调用,这个时候是C++和C混编了,虽然编译器是按照C的规则来编译.h/.c的文件,但是链接器还是按照C++的规则去查找函数名,就会出现找不到的情况,所以需要将在头文件函数声明的时候添加C语言的提示:
#ifdef __cplusplus
extern "C"
{
void myFunction(void); //这里写函数声明
}
#endif
楚人有涉江者,其剑自舟中坠于水。遽契其舟,曰:“是吾剑之所从坠。”舟止,从其所契者入水求之。舟已行矣,而剑不行,求剑若此,不亦惑乎!