проблема в классах с тем же именем и родителем в DLL и EXE, но с другой реализацией - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть класс с именем Menu, и этот класс скомпилирован как с dll, так и с exe.У меня есть другой класс с именем ChildMenu, который наследуется от Menu, и этот класс также скомпилирован с dll и exe.

У меня есть функция в dll, которая создает ChildMenu и возвращает его как Menu.

extern "C"
{
   Menu* createMenu();
}

и с реализацией

Menu* createMenu()
{
    return new ChildMenu();
}

, когда я изменяю поведение класса ChildMenu в dll и перекомпилирую его, но не в exe, поведение класса не менялось, пока я не изменил поведение класса вexe и перекомпилируйте его тоже.

ChildMenu переопределил один из методов Menu. Изменение поведения произошло в переопределенном методе.

я создал ChildClass в dll, но его поведение исходит от класса exe.

почему это произошло?

1 Ответ

0 голосов
/ 16 февраля 2019

проблема в gcc по умолчанию экспортируемые символы в разделяемых библиотеках.Я исправляю проблему, скрывая видимость классов;

...