C++ 模块化开发中交互通信方法的选择

C++ 模块化开发中交互通信方法的选择,c++,c,shared-objects,C++,C,Shared Objects,我正在开发一个核心、插件和GUI模块分离的软件。我根据需要动态加载模块 考虑到使用不同工具包的插件或GUI最终将由第三方开发,我需要确定哪种交互通信最适合以这种方式模块化的软件,以便不同部分可以交换事件和信息 现在,我只考虑从共享对象加载符号,并使用它们,了解它们的类型和功能。我也考虑过使用像DBus这样的IPC,但我不确定这是过度使用还是完全没有必要 跨平台目前不太令人担忧,但将来可能会如此 一个与另一个的优缺点是什么?有没有其他的解决方案要考虑?我还没有发现。当调用者和被调用者可以直接共享指

我正在开发一个核心、插件和GUI模块分离的软件。我根据需要动态加载模块

考虑到使用不同工具包的插件或GUI最终将由第三方开发,我需要确定哪种交互通信最适合以这种方式模块化的软件,以便不同部分可以交换事件和信息

现在,我只考虑从共享对象加载符号,并使用它们,了解它们的类型和功能。我也考虑过使用像DBus这样的IPC,但我不确定这是过度使用还是完全没有必要

跨平台目前不太令人担忧,但将来可能会如此


一个与另一个的优缺点是什么?有没有其他的解决方案要考虑?我还没有发现。当调用者和被调用者可以直接共享指针时,所有关于缓冲区大小和复制方向的额外注释都是不必要的

如果您想移动到Windows,请考虑共享库可能具有不同的分配器和不同的类布局。最好的方法是导出一个工厂函数,返回一个指向接口的指针(抽象类只有纯虚拟成员函数,没有数据,数据和实现都在一个子类中),然后让对象释放自己(其中一个虚拟成员函数会破坏它)

例如,您可以查看COM
IUnknown
。您不需要所有复杂的接口查询等,但使用纯虚拟函数和引用计数是一种非常灵活、非常可扩展且非常可移植的模式