Visual Studio 解决方案:静态项目还是共享项目?
Posted
技术标签:
【中文标题】Visual Studio 解决方案:静态项目还是共享项目?【英文标题】:Visual Studio Solution: static or shared projects? 【发布时间】:2010-05-15 11:47:02 【问题描述】:当整个项目(解决方案)由多个子项目 (.vcproj) 组成时,将它们绑定在一起的更好方法是:作为静态库还是作为共享库?
假设这些子项目没有在其他地方使用,共享库方法不应减少内存使用或加载时间。
【问题讨论】:
【参考方案1】:意见:几乎在所有情况下都是静态的。
在 Windows 上的 C++ 中跨动态加载的库构建接口要困难得多。例如,与 Unix 共享对象不同,您不能对所有模块都使用标准单例,因为 DLL 将拥有自己的一组静态变量。
面向对象的接口通常很难从 DLL 中导出。
至于加载时间,rebase 等问题需要通过共享库来解决。
另一方面,您今天不共享的库将来可能会共享。但是,在大多数情况下,与依赖额外模块的代价相比,在 RAM 或磁盘映像中付出复制的代价要好。
【讨论】:
一个项目中不同的子模块,是的。用于多个项目,不适合动态。无论使用哪种方法,您都必须小心符号的实际结束位置以上是关于Visual Studio 解决方案:静态项目还是共享项目?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio C++:在另一个项目中使用一个项目生成的静态库
并行构建 Visual Studio 解决方案会丢失一些静态库的 PDB