【发布时间】:2015-06-17 04:11:49
【问题描述】:
我使用 Visual Studio 已经有一段时间了,主要为 C++ 开发。我经常需要创建包含多个模块(项目)的解决方案 - 例如实用程序库,它由几个 .dll 文件组成。
当一个模块 (A) 需要使用另一个模块 (B) 时,有一个标准模式:
- 包括必需的标头。
- 从 B 链接输出库文件(例如,在 VS 中:项目配置 ->
Linker->Input->Additional Dependencies->'B.lib')。 - [可选] 设置正确的构建顺序(因此 B 在 A 之前构建)。
最近我开始玩弄 C#,因为我决定用它为我的引擎开发一些基于 GUI 的工具(它比使用 C++ 和 Qt 或 wxWidgets 等外部库要容易得多) .我了解到,在 C# 中,此类依赖项是使用“参考”设置的:
当我发现这个选项也适用于 C++ 项目时,我感到非常惊讶!
确实,在我创建示例解决方案并以这种方式设置依赖项后,一切正常,没有任何额外的配置,如“链接器输入”或其他东西。
我的问题是:究竟这个选项对 C++ 项目有什么作用?我对所有利润和潜在的权衡都感兴趣。
我已经知道,它会导致来自其他项目的链接输出设置为依赖项。还要别的吗?引用模块之间可能存在一些运行时依赖关系?它如何影响生成的输出?
【问题讨论】:
-
项目引用自动从另一个项目的相应构建配置中获取输出(用于调试应用程序构建的调试库等)。手动设置是一项相当大的工作量。
-
另外,既然你提到了 DLL,是的,项目引用将同时引入构建输出,.lib 导入库和运行时的 .DLL。
标签: c++ visual-studio visual-c++ visual-studio-2012 project-reference