在DLL中包装类的优点

时间:2011-08-24 12:19:44

标签: c++ dll export

我刚刚在我的项目中完成了一个阶段,在那里我编写了一个小型基础架构来执行某个任务,由一个带有几个辅助类的核心类组成。 C ++'是非常基本的 - 单继承,一些STL容器,就是这样。 没有线程 - 客户端运行节目。

我现在要做的是将它全部包装在DLL中,对其进行版本化并使用 它作为一个独立的单位。我想要分离以跟踪变化和 发展得更好,也许也适用于其他项目。

由于我没有DLL中的类的经验,我想听听你的: 你对这个问题有什么看法?

具体做法是:

  • 这值得吗?
  • 你经常这样做或不经常这样做吗?
  • 兼容性问题(比如使用不同编译器编译的客户端)怎么样?

我并不是真的要求辩论(虽然这可能是结果),而是经验的建议。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

我发现很难看到这有什么好处。我可以看到很多问题:

  • 没有跨DLL边界检查类型。任何版本不匹配都会导致运行时故障,比编译时故障更难检测。
  • 额外的部署难题。您可能想要更新一些但不是所有模块,因此需要处理复杂的依赖关系。
  • 所有想要使用这些DLL的客户端必须使用相同的编译器。

如果您能确定超过负面影响的利益,则只进行此更改。

答案 1 :(得分:1)

C ++代码在编译器之间不是二进制兼容的,通常没有用创建暴露C ++类的DLL,这些类不是作为使用它们的项目的一部分构建的。

如果要创建一个具有明确定义的面向对象接口的Windows DLL,以供世界其他地方使用,请将其设置为COM inproc服务器。