c++ - 从 gcc 3.3.3 移植到 4.1.0,C++ 模板,对 undefined reference

标签 c++ templates gcc

我们的应用程序在许多地方使用了 C++ 模板。我目前正在尝试从 gcc 3.3.3 移植到 4.1.0,但遇到了问题。我在一个小型共享库和可执行文件中重现了这个问题。我正在构建共享库 好的,但是可执行文件无法链接到以下内容:

    undefined reference to `MyNumber<int>::~MyNumber()'
    undefined reference to `MyNumber<int>::MyNumber(int)'
    undefined reference to `MyNumber<int>::number()'

我没有直接在可执行文件中使用模板类,而是希望所有这些都封装在共享库的实现中(可能天真如此)。

该问题仅在使用共享库时出现。当我在 SLES 11 (gcc 4.3.2) 上构建我们的应用程序时,我的大部分问题似乎都已解决,但我仍然收到以下一些问题:

    undefined reference to `vtable for MYCLASS<T1, T2>'

这一切都是在将可执行文件链接到共享库时。

最佳答案

这是一个令人痛苦的晦涩消息,但它意味着您没有定义虚函数,请参见 here

关于c++ - 从 gcc 3.3.3 移植到 4.1.0,C++ 模板,对 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/934725/

相关文章:

c++ - 将指向类成员的指针作为模板参数传递

c - 如何在 GCC (x86_64) 中使用内联汇编进行相对跳转/调用

c++ - Klocwork 提示无符号与零的比较总是正确的——为什么?

c++执行屏幕不稳定

c++ - 在类型匹配中忽略模板参数

visual-studio - Visual Studio 模板 - 有条件隐藏参数

c++ - 链接器似乎忽略了库并默认为旧版本

c++ - 链接 GLEW 和其他人,_glViewport 是唯一 Unresolved

C++ 我想将两个字符串写入管道,两者之间有一个小的延迟

c++ - std::regex 用于将由冒号分隔的字符串解析为不同的组