原因
出现这种情况的原因,编译为obj
文件的时候并不需要函数的具体实现,只要有函数的原型即可。但是在链接为可执行文件的时候就必须要函数的具体实现了,故而该错误那就是找不到函数的原型
解决办法
1、如果是动态库或者静态库中的函数,则需要检查是否将库链接(检查路径),若已经库链接,但还是有问题,则检查是否各个依赖库的顺序不对。编译的时候,如果文件a
依赖于文件b
,那么编译的时候必须把a
放前面,b
放后面。
2、函数或变量所在的库,没有添加到link_directories,需要在CMakeLists.txt里面添加
3、模板函数或者模板类数据没有实例化,也可能导致这个问题,需要指定模板,对模板函数或模板类做实例化
4、一定要检查你include的路径是否对,很多这种问题。以为添加了,实际找到不到指定的路径,某些参数就为空,需要message输出检查一下
5、检查头文件是否引用