Ошибка компоновщика GCC при сборке для iPhone - PullRequest
2 голосов
/ 23 марта 2011
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)

для некоторых классов, которые встроены в эту библиотеку. Тот же код компилируется и прекрасно работает в Windows. Другие классы из той же библиотеки тоже отлично связаны на Mac. У меня нет ошибок сборки, только ошибки компоновщика. Можете ли вы сказать мне несколько причин для такого рода ошибок? Я думаю, что все виртуальные функции реализованы, потому что он прекрасно компилируется и связывается на других платформах (не только Windows).

1 Ответ

1 голос
/ 23 марта 2011

Чтобы gcc мог генерировать vtables, каждый из ваших (полиморфных) классов должен иметь как минимум один виртуальный не встроенный метод.Например, если ваш виртуальный деструктор в настоящий момент встроен, отключите его и переместите в исходный файл, и это должно исправить.

...