在dll中包装类的优点
Advantage of wrapping classes in DLLs
我刚刚完成了我的项目的一个阶段,我写了一个小的基础设施来执行某个任务,由一个核心类和几个辅助类组成。c++的特性是非常基本的——单继承,一些STL容器,就是这样。没有线程-客户端正在运行。
我现在想做的是把它全部包装在一个DLL中,对它进行版本化,然后使用它是一个独立的单元。我希望这种分离是为了跟踪变化和更好地开发,也许对其他项目也是如此。
由于我没有dll类的经验,我想听听你的:你解决这个问题的方法是什么?
专:- 值得这么麻烦吗?
- 你经常这样做还是根本不这样做?
- 关于兼容性问题(如客户端使用不同的编译器编译)?
我并不是真的要求辩论(尽管这是可能的结果),而是一个来自经验的建议。
感谢您的宝贵时间。
我发现这样做很难看到任何好处。我可以看到很多问题:
- 没有跨DLL边界的类型检查。任何版本不匹配都会导致运行时失败,比编译时失败更难检测。
- 额外的部署问题。你可能想要更新一些模块,但不是所有的模块,所以要处理复杂的依赖关系。 所有要使用这些dll的客户端必须使用相同的编译器。
只有在你能发现利大于弊的情况下才做这个改变。
c++代码在编译器之间不是二进制兼容的,因此创建dll暴露那些不是作为使用它们的项目的一部分构建的c++类通常是没有用的。
如果你想创建一个具有定义良好的面向对象接口的Windows DLL,让它成为一个COM inproc服务器。
相关文章:
- 如何包装第三方DLL在R中使用
- 简化在 Pybind11 中为 C++ 模板类生成包装类:模板声明不能出现在块范围内
- C++-用与被包装数据相同的语法构造包装类
- C++-用和结构相同的语法围绕结构构造包装类
- C++泛型包装类,它为某些函数添加了额外的处理
- 如何减少大量包装类的实现代码?
- 在 C++ 中为 C 样式对象创建一个透明包装类
- 如何将包装类的对象用作包装函数中的参数
- 这->...在模板包装类中必需
- 无法理解包装类的构造函数的声明
- 如何使用指针作为参数在 C# 中包装C++ DLL?
- 标准向量之上的 C++11 包装类
- 编写安全包装类以管理用户定义对象的指针
- 如何从 JAVA 程序中访问文件中定义的类.DLL方法
- 重构现有包装类,以使用与包装器本身相同的构造函数参数包装 T
- 在 C++ 中使用 C# COM 包装的 DLL 会抛出未注册的类
- 如何从c#中的托管c++dll(使用包装类)获取字符串
- 在C#中包装C++类DLL
- 在dll中包装类的优点
- Lua包装类-通过DLL向Lua公开c++静态方法