OSDev
http://osdev.ru/

undefined reference to vtable - MinGW GCC
http://osdev.ru/viewtopic.php?f=6&t=454
Страница 1 из 1

Автор:  Artemich [ 26 окт 2011, 11:24 ]
Заголовок сообщения:  undefined reference to vtable - MinGW GCC

Пишу свою операционку. Появились задачи, эффективно решить которые можно только через классы и наследование.
MinGW GCC ни в какую не компонует код, где упоминаются виртуальные функции. Для удобства отладки вынес их в отдельный тестовый файл - ошибки те же.
Дословный текст кода:
Код:
class base{
   public:
   base()
   {

   }
   virtual int foo();
};

int base::foo()
{

}

class Derived : public base
{
   int foo();
};

int Derived::foo()
{

}

void _main()
{
   Derived A;
}


Строки компиляции и ошибки:
Код:
d:\MinGW\bin>d:\mingw\bin\gcc -ffreestanding -fpermissive -nodefaultlibs -nostdlib -c d:\myos\sources\test.cpp -o d:\myos\bin\test.o -lstdc++
d:\MinGW\bin>d:\mingw\bin\ld -Ttext 0x500000 --image-base 0x0 -o d:\myos\bin\test.bin d:\myos\bin\test.o
d:\myos\bin\test.o:test.cpp:(.rdata$_ZTI7Derived[__ZTI7Derived]+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
d:\myos\bin\test.o:test.cpp:(.rdata$_ZTI4base[__ZTI4base]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'


Подскажите пожалуйста, что не так с кодом?
Перепробовал разные варианты - ничего не помогает.
Если компилирую и компоную непосредственно самим g++ - все нормально, без ошибок, но появляются совершенно невероятные глюки...

Автор:  grindars [ 26 окт 2011, 11:38 ]
Заголовок сообщения:  Re: undefined reference to vtable - MinGW GCC

Добавьте опции -fno-rtti -fno-exceptions. И стандартную библиотеку C++ вы зря подключаете, она от системы зависит. Откажитесь от использования стандартных классов или напишите свою.

Автор:  Artemich [ 26 окт 2011, 11:46 ]
Заголовок сообщения:  Re: undefined reference to vtable - MinGW GCC

Большое спасибо! Все помогло. Стандартную библиотеку я не использую) Это отовизм, остался от экспериментов с командной строкой, когда пробывал разные параметры.

Автор:  Himik [ 26 окт 2011, 12:13 ]
Заголовок сообщения:  Re: undefined reference to vtable - MinGW GCC

Artemich писал(а):
Большое спасибо! Все помогло. Стандартную библиотеку я не использую)

Стандартную библиотеку можно использовать без линковки, используя только заголовочные файлы. Дело в том, что исполняемый код многих шаблонов и функций расположен в заголовках. Я например использую vector без проблем.

Автор:  grindars [ 26 окт 2011, 12:51 ]
Заголовок сообщения:  Re: undefined reference to vtable - MinGW GCC

Himik писал(а):
Стандартную библиотеку можно использовать без линковки, используя только заголовочные файлы. Дело в том, что исполняемый код многих шаблонов и функций расположен в заголовках. Я например использую vector без проблем.


В таком случае лучше использовать собственную копию библиотеки, типа того же STLport. Мало ли, что там в гццшной libstdc++ и от чего она зависит.

Автор:  Himik [ 26 окт 2011, 13:07 ]
Заголовок сообщения:  Re: undefined reference to vtable - MinGW GCC

grindars писал(а):
Мало ли, что там в гццшной libstdc++ и от чего она зависит.

Линковщик покажет :-)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/