在dll中包装类的优点

Advantage of wrapping classes in DLLs

本文关键字:包装类 dll      更新时间:2023-10-16

我刚刚完成了我的项目的一个阶段,我写了一个小的基础设施来执行某个任务,由一个核心类和几个辅助类组成。c++的特性是非常基本的——单继承,一些STL容器,就是这样。没有线程-客户端正在运行。

我现在想做的是把它全部包装在一个DLL中,对它进行版本化,然后使用它是一个独立的单元。我希望这种分离是为了跟踪变化和更好地开发,也许对其他项目也是如此。

由于我没有dll类的经验,我想听听你的:你解决这个问题的方法是什么?

专:

    值得这么麻烦吗?
  • 你经常这样做还是根本不这样做?
  • 关于兼容性问题(如客户端使用不同的编译器编译)?

我并不是真的要求辩论(尽管这是可能的结果),而是一个来自经验的建议。

感谢您的宝贵时间。

我发现这样做很难看到任何好处。我可以看到很多问题:

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

只有在你能发现利大于弊的情况下才做这个改变。

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

如果你想创建一个具有定义良好的面向对象接口的Windows DLL,让它成为一个COM inproc服务器。