【发布时间】:2009-06-01 13:02:34
【问题描述】:
我们的应用程序在很多地方都使用了 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>'
这一切都是在将可执行文件链接到共享库时。
【问题讨论】:
-
很难确定编译器已经告诉您的内容。你能把问题减少到最小的术语并发布吗?