【C++】error LNK2019: 无法解析的外部符号

转:C++ error LNK2019: 无法解析的外部符号 错误解决方案


今天在实现类模板特例化的时候遇到一个问题,就是把类模板函数实现放到类的cpp文件中,然后在main函数中使用这个类的时候,就会出现无法解析的外部符号:函数名(xxxx)等错误,那么出现这个错误的原因是什么呢?

原因就是现在的编译里不支持模板函数的申明和实现分开,要像上面那样使用类成员函数,有以下两种方法

1. 在使用这个类的文件中包含#include“xxxx.cpp”

2.在类头文件末尾包含模板实现函数'#include"xxxx.cpp"

这两种方法都可以解决上面的问题。

(若编译通过 链接未通过 应该考虑外部链接的情况 从项目的链接,项目的属性设置考虑 而不是从代码本身的角度考虑)

(如果使用vs的IDE 可以在右键项目-属性-链接器的下面 着重修改常规-附加库目录 输入-附加依赖项)

下面我们来说下error2019会在什么时候出现?

1. 在使用动态库时候,没有包含相应的lib

解决方案:#pragma comment( lib,"xxxx.lib");

2.函数只进行了申明而没有进行定义

解决方案:为申明的函数添加函数实现

3.缺少.obj目标文件

解决方案:从新设置文件编译的路径,然后重新编译

猜你喜欢

转载自blog.csdn.net/HelloZEX/article/details/83386983