如何将GCC类传递给MSVC dll?

时间:2011-12-09 06:25:28

标签: c++ visual-c++ gcc

我想在GCC编译的gui app和MSVC dll之间传递一个类?

我希望我的GUI应用程序与插件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 个答案:

答案 0 :(得分:2)

问题在于链接和C ++重整。 GCC和MSVC不会在DLL中产生同名的符号。我所知道的唯一方法是使用函数和结构的C链接来设置应用程序和插件DLL之间的接口。类似的东西:

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

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

不幸的是,这意味着您将无法传递STL集合或其他更复杂的类。不过,我希望你找到比这更好的答案。我会睁大眼睛。