我们的应用程序在许多地方使用了 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/