Как вызвать виртуальную функцию DLL из исполняемого файла? C ++ VS2019 - PullRequest
0 голосов
/ 04 апреля 2020

Я программирую свой собственный редактор игр, и он состоит из множества библиотек 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 и передаю их приложению. Я просто хотел дать вам идею.

1 Ответ

0 голосов
/ 06 апреля 2020

В этом не было ничего плохого, снова проблема VS Debugger. Удаление некоторых функций сработало!

...