构建iPhone时GCC链接器错误

时间:2011-03-23 12:52:23

标签: c++ gcc linker linker-errors

Undefined symbols:
"vtable for NameSpaceA::NameSpaceB::ClassA", referenced from:
__ZTVN4NameSpaceA17NameSpaceB15ClassAE$non_lazy_ptr in libSomeLib.a(SomeLib.bulk.o)
(maybe you meant: __ZTVN4NameSpaceA17NameSpaceB15ClassAE$non_lazy_ptr)

对于在此lib中构建的某些类。相同的代码在Windows上编译和链接很好。来自同一个lib的其他类也可以在Mac上正常链接。我没有任何构建错误,只有链接器错误。你能告诉我这种错误的原因吗?我认为所有虚函数都是实现的,因为它可以在其他平台(不仅仅是Windows)上编译和链接。

1 个答案:

答案 0 :(得分:1)

为了让gcc发出vtable,每个(多态)类都需要至少有一个虚拟的非内联方法。例如,如果您的虚拟析构函数当前是内联的,则取消内联并将其移动到源文件,然后将其修复。