码迷,mamicode.com
首页 > 编程语言 > 详细

C++使用模板类时出现LNK2019 unresolved external symbol错误.

时间:2020-03-24 13:15:01      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:错误   href   导出   family   和我   单元   def   tail   文件   

如果你在使用模板类的时候, Declaration和Definition都没有问题, 但却出现了unresolved external symbol错误.

那你应该时遇到了和我一样的问题.

技术图片

 

 

 


 

这是一个链接错误, 即程序在运行时并没有找到你所调用的外部符号.

C++在编译普通类和模板类是稍有不同.

在编译普通类时, 会在编译时就令其生成编译单元.

所以如果你调用了头文件里函数, 编译器会首先在你包含的头文件中寻找该函数,

如果该函数没有被实现(Definition), 他会在其他编译单元的导出符号表里寻找同名的函数, 最终完成程序的执行.

 

但是模板类有些特殊.  当一个模板类没有被调用时, 他就不会被具现化. 也就是说, 模板类的函数是没有编译单元的, 并没有产生二进制代码.

所以找不到函数的实现, 也就产生了unresolved external symbol错误.

 

解决方法:

1.将模板类的声明和实现都放在头文件中, 而不是分别放在.h和cpp文件中. 这样就给了模板类一个具现化的机会.

这位大佬写的比较清楚, 建议康康: https://blog.csdn.net/qq_41884002/article/details/99816073

 

C++使用模板类时出现LNK2019 unresolved external symbol错误.

标签:错误   href   导出   family   和我   单元   def   tail   文件   

原文地址:https://www.cnblogs.com/Ravenzzz/p/12558014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!