Пишу свою операционку. Появились задачи, эффективно решить которые можно только через классы и наследование.
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++ - все нормально, без ошибок, но появляются совершенно невероятные глюки...