Бинарная совместимость DLL

Я хочу дать пользователю возможность добавлять свои функции к моей программе в рантайме посредством подключения dll. Эти функции должны обрабатывать экземпляр класса полученный из моей программы, сам класс при этом находится в отдельном хедере доступном как из самой программы, так и из dll. Собственно, я краткий пример набросал, он заработал, но в гугле/so пишут что при компиляции dll и exe на разных компиляторах может что-то сломаться

так вот,

  1. Могу ли я принимать в dll экземпляр класса через указатель из основной программы и быть уверен что я с ним смогу корректно работать при использовании разных компиляторов?

  2. Я так понимаю, разные компиляторы могут создать разные представления одного и того же класса в памяти, поэтому передача класса/указателя_на_класс может сломать процесс работы с ним внутри dll, это так? Есть в таком случае вообще способы избежать этого?

Для явного связывания использую LoadLibrary(...) в exe и extern "C" __declspec(dllexport) ... в dll.


Ответы (0 шт):