LINUX.ORG.RU

Ошибка при линковке undefined reference to `vtable for classX'


0

0

Тема такая: Есть абстрактный класс, одна из реализаций этого класса скомпилирована как shared object (Для линковки используется следующая команда: g++ -shared -o libclassX1.so <список *.o файлов> -L<...> -l<...>). При линковке основной программы, использующей этот класс(g++ -o main_prog <список объектников> -L<...> -l<...>) вываливаются следущие ошибки типа: .obj//main.o(.text+0x5b21): undefined reference to `ClassX1::method1(...) ... .obj//main.o(.gnu.linkonce.t._ZN18ClassX1C1Ev+0x1a): undefined reference to `vtable for ClassX1'. С реализацией всё нормально, т.к. под win32 это дело нормально собирается и работает. Что не так? Предполагаю, что указываю неверную команду для сборки библиотеки. Заранее спасибо.

Re: Ошибка при линковке undefined reference to `vtable for classX'

Кажется, так бывает, когда один (или больше) из методов абстрактного класса забыли пометить как чистую виртуальную функцию.

anonymous ()

Re: Ошибка при линковке undefined reference to `vtable for classX'

Мое мнение что проблема в приоритетах объектников при линковке. Последним должен быть самый зависимый, но я могу ошибаться, года 4 назад такая трабла была, но деталей уже не помню

mumg ()

Re: Ошибка при линковке undefined reference to `vtable for classX'

У меня такое вылезает если у класса есть мембер которого
1. не юзают
2. определён в классе
3. для него нет функции

т.е.

class foo {
foo();
};

И foo::foo() нигде не определено как функция собственно.

ms ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.