dla*_*nod 92 c++ linker templates
当我使用模板为类编写C++代码并在源(CPP)文件和标题(H)文件之间拆分代码时,在链接最终可执行文件时会出现大量"未解析的外部符号"错误,尽管目标文件正确构建并包含在链接中.这里发生了什么,我该如何解决?
dla*_*nod 112
模板化的类和函数在使用之前不会被实例化,通常在单独的.cpp文件中(例如程序源).使用模板时,编译器需要该函数的完整代码才能使用适当的类型构建正确的函数.但是,在这种情况下,该函数的代码在模板的源文件中详细说明,因此不可用.
作为所有这些的结果,编译器只是假定它在别处定义并且仅将调用插入到模板化函数中.在编译模板的源文件时,程序源中使用的特定模板类型不会在那里使用,因此它仍然不会生成该函数所需的代码.这导致未解析的外部符号.
可用的解决方案是:
1和2基本上解决了这个问题,它使编译器在尝试在程序源中构建类型化函数时访问模板化函数的完整代码.
sho*_*osh 13
另一个选择是将代码放在cpp文件中,并在同一个cpp文件中添加模板的显式实例化,以及您希望使用的类型.如果您知道您将提前使用它几种类型,这将非常有用.
| 归档时间: |
|
| 查看次数: |
62760 次 |
| 最近记录: |