Я программирую свой собственный редактор игр, и он состоит из множества библиотек DLL. Некоторые библиотеки DLL используют другие библиотеки DLL для получения некоторых классов. Проблема в том, что всякий раз, когда я вызываю виртуальную функцию (чистую или нет, результат один и тот же) с указателем базового класса, происходит сбой приложения. Для визуализации:
//DLL1.h in DLL1
class Base{
static Base* SELF; //I use this to access functions
void DoSometing(); //Defined in DLL1.cpp
virtual void VirtualSomething();
};
//DLL2.h in DLL2
class Derived : public Base{
virtual void VirtualSomething(); //Defined in DLL2.cpp
};
//main.cpp in APP.exe
void main(){
Base::SELF = new Derived;
Base::SELF->DoSomething(); //Works fine
Base::SELF->VirtualSomething(); //Crashes
}
Примечание: я должен использовать указатель Base :: SELF, потому что позже я хочу изменить его на другую DLL. Кажется довольно неловко создавать указатель Derived и устанавливать его здесь как Base :: SELF, но это сложнее, я создаю эти указатели в другой DLL и передаю их приложению. Я просто хотел дать вам идею.