从dll到静态库导出类的好处

时间:2009-11-24 20:04:25

标签: c++ dll

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

2 个答案:

答案 0 :(得分:9)

DLL的优点:

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

静态库的优点:

  • 你不能以这种方式解决问题
  • 分发较少,如果您只有一个小应用程序,则不会被强制使用完整的安装程序。
  • 你不必担心其他任何人如果它是一个DLL就可以访问你的代码。
  • 更容易开发静态库,因为您无需担心导出和导入。
  • 内存管理更容易。

答案 1 :(得分:0)

Windows上动态库最重要且经常没有注意的一个特性是DLL拥有自己的堆。根据您的观点,这可能是优势或劣势,但您需要了解它。例如,DLL中的全局变量将在附加到该库的所有进程之间共享,这可能是事实上的进程间通信的有用形式,或者是模糊的运行时错误的来源。