Как передать класс GCC в MSVC DLL? - PullRequest
0 голосов
/ 09 декабря 2011

Я хочу передать класс между скомпилированным графическим приложением GCC и MSVC dll?

Я хочу, чтобы мое приложение с графическим интерфейсом взаимодействовало с плагином DLL,

пример:

(Редактировать, я думаю, что не совсем понятно. Я знаю, что это не сработает. Это PSEUDOcode. Я спросил, как заставить его работать, и это действительно связано с тем, какие у меня классы: D)

class eventbase{ }//virutal copy constructor [edit:cloner .o0]
class eventtype1{} // copy constructor [edit:cloner .o0]
class eventtype2{} // copy constructor [edit:cloner .o0]

и передать эти события из / в gui / dll ...

Я боюсь (на самом деле, конечно), это не сработает, поэтому я прошу обходной путь.Как вы создаете события для передачи на ваши плагины?как вы управляете ими?

1 Ответ

2 голосов
/ 09 декабря 2011

Проблема в связывании и искажении в C ++.GCC и MSVC не приводят к символам с одинаковыми именами в DLL.Единственный способ обойти это, насколько я знаю, - это использовать функции и структуры языка C для настройки интерфейса между приложением и библиотекой подключаемого модуля.Что-то вроде:

extern "C"
{
   struct pluginClass
   {
      int pluginVersion;
      void (*plugin_func)();
   };

   pluginClass * myPluginStartup();
   void myPluginShutdown( pluginClass * returnToHeap );
}

К сожалению, это означает, что вы не сможете передавать коллекции STL или другие более сложные классы.Я надеюсь, что вы найдете лучший ответ, чем этот, хотя.Я буду держать глаза открытыми на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...