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

Mat*_*jek 6 c++ project-reference visual-studio visual-c++ visual-studio-2012

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

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

  1. 包括所需的标题.
  2. 链接B中的输出库文件(例如,在VS中:项目配置 - > Linker- > Input- > Additional Dependencies- > 'B.lib').
  3. [可选]设置正确的构建顺序(因此B在A之前构建).

最近,我开始玩弄C#,因为我决定开发一些基于GUI的工具,我的引擎与它(这是很多更简单,比使用C++和外部库的Qt一样wxWidgets的或).我了解到,在C#中,使用'References'设置了这样的依赖:

在此输入图像描述

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

实际上,在我创建示例解决方案并以这种方式设置依赖关系后,一切都运行正常,没有任何其他配置,如"链接器输入"或其他东西.

我的问题是:什么究竟该选项为C++项目呢?我对所有利润和潜在的权衡感兴趣.

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

Han*_*ant 11

原本只用于C++/CLI项目.并且添加对C#项目的引用完全相同的事情,您选择了使项目编译所需的.NET引用程序集.

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

快进到VS2010,一个未完成的版本.Microsoft项目超出其预定发货日期的少数情况之一.他们额外花了6周时间来处理错误列表.但这还不够,本来应该更容易链接依赖关系的功能实际上并未实现或禁用.

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

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