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