便携式C ++组件设计

时间:2011-02-26 16:04:51

标签: c++ cross-platform components

我过去一直在使用COM和.NET程序集来开发基于组件的系统。现在我将开始研究跨平台-c ++项目,并希望在组件中构建代码以及......

显然COM和.NET不是一个选项,因为COM在任何地方都不可用,但Windows和Assemblies会在.NET框架中添加依赖项,而目标系统可能无法使用它。

我知道由于ABI差异,我将无法在不重新编译的情况下在不同操作系统之间移动组件,但我想以某种方式编写代码,它在源代码级别兼容

是否有任何系统/框架能够在C ++中实现这样的架构?

4 个答案:

答案 0 :(得分:1)

Mozilla套件使用名为XPCOM的框架。从来没有使用它,但它的含义应该像微软的COM一样便携。这是我所知道的基于本机代码的唯一进程内组件系统;如果你在Java工作,那就是OSGi

现在大多数Unix软件似乎都使用分布式组件模型,其中组件位于不同的进程中。目前流行的系统似乎是DBus; KDE3使用了一个名为DCOP的替代方案;当然,如果你想走这条路,那就是老CORBA。

答案 1 :(得分:1)

我过去曾使用过这样的系统 - 我们基本上重新发明了COM。如果您对该方法感兴趣,请查看这篇精彩的文章:http://msdn.microsoft.com/en-us/library/ms809983.aspx

答案 2 :(得分:1)

如果您可以使用Qt依赖项(只有核心库,没有GUI库),您可以查看CTK Plugin Framework

它在Apache 2.0下获得许可,是一个动态C ++组件系统,其API与OSGi几乎完全相同。

答案 3 :(得分:0)