在Visual Studio中添加对C ++项目的引用有什么影响?

时间:2015-04-11 13:28:17

标签: c++ visual-studio visual-c++ visual-studio-2012 project-reference

我已经使用Visual Studio很长一段时间了,主要是为C ++开发。我经常需要创建包含多个模块(项目)的解决方案 - 例如实用程序库,它由几个.dll文件组成。

当需要一个模块(A)使用另一个模块(B)时,有一个标准模式:

  1. 包含必填标题。
  2. 从B链接输出库文件(例如,在VS中:项目配置 - > Linker - > Input - > Additional Dependencies - > 'B.lib' )。
  3. [可选]设置正确的构建顺序(因此B在A之前构建)。
  4. 最近我开始使用C#,因为我决定用它为我的引擎开发一些基于GUI的工具(它比使用C ++和外部库更容易更多 Qt或wxWidgets)。我了解到,在C#中,这些依赖关系是使用' References':

    设置的

    enter image description here

    当我发现时,我很惊讶这个选项也适用于C ++项目!

    事实上,在我创建示例解决方案并以这种方式设置依赖关系之后,一切都运行良好,没有任何其他配置,例如"链接器输入"什么的。

    我的问题是:此选项完全对C ++项目有什么作用?我对所有利润和潜在的权衡感兴趣。

    我已经知道,它会导致其他项目的链接输出设置为依赖项。还要别的吗?也许参考模块之间有一些运行时依赖?它如何影响生成的输出?

1 个答案:

答案 0 :(得分:10)

最初意味着仅用于C ++ / CLI项目。并且添加对C#项目的引用完全相同的事情,您选择了使项目编译所需的.NET引用程序集。

但这让许多C ++程序员感到困惑,他们认为它应该包含一些通常有用的东西。可能是因为它位于“Common Properties”标题下。关于它的很多问题。

快进VS2010,这是一个尚未完成的版本。 Microsoft项目超出其预定发货日期的少数情况之一。他们额外花了6周时间来处理错误列表。但这还不够,本来可以更容易链接依赖关系的功能是not actually implemented或禁用。

所以在VS2012,他们决定采用不同的方式,并使Add Reference对本地C / C ++项目也有用。您总是选择项目引用,它需要是静态库或DLL项目。一个生成.lib文件的人。它会自动告诉链接器链接该.lib文件。没有别的,它只是将.lib文件添加到链接器命令行。效果很好。

更新:VS2015再次更改,现在有一个References节点。右键单击它以添加对另一个项目的引用。