c++ - 从 dll 与静态库中导出类的好处

标签 c++ dll

我现在正在编写一个 C++ 类,它将在我正在处理的项目中使用。我可以选择将它放在静态库中,或者从 dll 中导出类。每种方法的好处/惩罚是什么。我唯一能想到的是我并不真正关心的编译代码大小。谢谢!

最佳答案

DLL 的优点:

  • 您可以有多个不同的 exe 来访问此功能,因此您的项目总体规模会更小。
  • 您可以动态更新您的组件,而无需替换整个 exe。如果您这样做,请注意界面保持不变。
  • 有时就像 LGPL 一样,您被迫使用 DLL。
  • 您可以将一些组件(例如 C#、Python 或其他语言)绑定(bind)到您的 DLL 中。
  • 您可以构建使用不同版本 DLL 的 DLL 程序。例如,您可以检查某个函数是否存在于某个操作系统 DLL 中,并且仅在存在时调用它,否则进行一些其他处理。

静态库的优点:

  • 那样你就不会遇到 dll verisoning 问题
  • 较少分发,如果您只有一个小应用程序,则不会被迫进入完整的安装程序。
  • 您不必担心任何其他人会绑定(bind)到您的代码中,如果它是一个 DLL 就可以访问。
  • 更容易开发静态库,因为您无需担心导出和导入。
  • 内存管理更容易。

关于c++ - 从 dll 与静态库中导出类的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792578/

相关文章:

c++ - 访问指针句柄中对象的地址

c++ - 在 MS VC 2013 Express 中将 C++ dll 从 32 位转换为 64 位

c++ - Visual Studio 2015 C++ 应用程序需要客户端客户端上的 api-ms-win-crt-runtime-l1-1-0.dll

c# - 在不重新编译项目的情况下升级 C# 项目中的引用 dll

c++ - 如何捕获父进程中的Term操作信号?

C# pinvoke 释放 native c++ 内存

c++ - 无法遍历模板映射。如何处理这个错误?

c++ - 为什么在 QtCreator 的 qMake 项目需要 CMake?

c++ - 这些宏和 typedef 有什么作用?如何将其扩展为成员函数?

c++ - .dll 、 .lib 、 .h 文件有什么区别?