2011-03-23 63 views
2
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)上编译和链接很好。为iPhone构建GCC链接器时出错

回答

1

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