我想在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 ......
我害怕(实际上很好)这不会工作,所以我要求一个解决方法。你如何构建事件传递给你的插件?你是如何管理它们的?
答案 0 :(得分:2)
问题在于链接和C ++重整。 GCC和MSVC不会在DLL中产生同名的符号。我所知道的唯一方法是使用函数和结构的C链接来设置应用程序和插件DLL之间的接口。类似的东西:
extern "C"
{
struct pluginClass
{
int pluginVersion;
void (*plugin_func)();
};
pluginClass * myPluginStartup();
void myPluginShutdown( pluginClass * returnToHeap );
}
不幸的是,这意味着您将无法传递STL集合或其他更复杂的类。不过,我希望你找到比这更好的答案。我会睁大眼睛。