过去我一直使用COM和.NET程序集来开发基于组件的系统。现在我要开发一个跨平台的C++项目,也想将代码结构化成组件…
显然,COM和.NET都不是选项,因为COM只在Windows上可用,而程序集会增加对.NET框架的依赖,而目标系统可能没有该框架。
我知道由于ABI差异,我无法在不重新编译的情况下在不同操作系统之间移动组件,但我希望以一种兼容源代码级别的方式编写代码。
是否有任何系统/框架可以在C++中实现这样的架构?
过去我一直使用COM和.NET程序集来开发基于组件的系统。现在我要开发一个跨平台的C++项目,也想将代码结构化成组件…
显然,COM和.NET都不是选项,因为COM只在Windows上可用,而程序集会增加对.NET框架的依赖,而目标系统可能没有该框架。
我知道由于ABI差异,我无法在不重新编译的情况下在不同操作系统之间移动组件,但我希望以一种兼容源代码级别的方式编写代码。
是否有任何系统/框架可以在C++中实现这样的架构?
我曾经使用过这样的系统——我们基本上重新发明了COM。如果你对这种方法感兴趣,可以查看这篇优秀的文章:http://msdn.microsoft.com/en-us/library/ms809983.aspx
Linux .so/Windows dll
,COM的主要优势在于二进制兼容性,这样你就可以从任何地方使用相同的组件,包括不同的编程语言、脚本、浏览器等。你需要这个吗?如果你只是想将系统分解成可重用的、可插拔的部分,那么.so
似乎已经足够简单和高效了。 - davka