【发布时间】:2010-05-15 11:47:02
【问题描述】:
当整个项目(解决方案)由多个子项目 (.vcproj) 组成时,将它们绑定在一起的更好方法是:作为静态库还是作为共享库?
假设这些子项目没有在其他地方使用,共享库方法不应减少内存使用或加载时间。
【问题讨论】:
标签: c++ visual-studio visual-c++ linker
当整个项目(解决方案)由多个子项目 (.vcproj) 组成时,将它们绑定在一起的更好方法是:作为静态库还是作为共享库?
假设这些子项目没有在其他地方使用,共享库方法不应减少内存使用或加载时间。
【问题讨论】:
标签: c++ visual-studio visual-c++ linker
意见:几乎在所有情况下都是静态的。
在 Windows 上的 C++ 中跨动态加载的库构建接口要困难得多。例如,与 Unix 共享对象不同,您不能对所有模块都使用标准单例,因为 DLL 将拥有自己的一组静态变量。
面向对象的接口通常很难从 DLL 中导出。
至于加载时间,rebase 等问题需要通过共享库来解决。
另一方面,您今天不共享的库将来可能会共享。但是,在大多数情况下,与依赖额外模块的代价相比,在 RAM 或磁盘映像中付出复制的代价要好。
【讨论】: