我遇到了一些问题(即,链接错误),并且显式实例化了函数模板。在Visual Studio下,项目链接ok,只有在g ++/Unix下,使用Eclipse-CDT,链接才会产生错误。函数模板的显式实例化失败(g ++)
函数调用是静态库的一部分,该静态库与大型项目中的动态库链接。 函数的体系结构如下:
- 函数模板声明(但不执行)在我
MathUtils.h
文件命名空间内。其中一个函数参数本身就是一个结构模板,它在h
文件中(在相同的命名空间下)被声明为和。 - 功能实现和实例化在
MathUtils.cpp
。 - 函数调用在
someFile.cpp
(当然这是#include "MathUtils.h"
),编译为&作为静态库的一部分链接。
推动我(几乎)疯狂的事,就是生成错误不完全可重复的,我怀疑的Eclipse是被指责(或许跳过一些步骤,虽然我用clean project
每个版本之前)。
大约一个小时,调试配置内置W/O错误,但发布失败,连接错误undefined reference to...
。 然后,在接下来的一个小时内,两种配置均失败。然后我做了一个小项目,只有上面提到的3个文件,并且从命令行和Eclipse编译它 - 没有任何错误。现在两个配置似乎都链接正常。
有没有人遇到过使用Eclipse-CDT的类似问题?有什么建议么?
编辑:由于问题不容易(或根本不)重现,我想这将很难得到答案。如果我有任何新的见解,我会更新。
这是不正确的,找`明确instantiation`。 – 2011-04-28 06:38:18
我的错误 - 我误读了类模板的函数模板。 – stackmate 2011-04-29 18:24:27