我已经使用Visual Studio很长一段时间了,主要是为C ++开发。我经常需要创建包含多个模块(项目)的解决方案 - 例如实用程序库,它由几个.dll
文件组成。
当需要一个模块(A)使用另一个模块(B)时,有一个标准模式:
Linker
- > Input
- > Additional Dependencies
- > 'B.lib'
)。最近我开始使用C#,因为我决定用它为我的引擎开发一些基于GUI的工具(它比使用C ++和外部库更容易更多 Qt或wxWidgets)。我了解到,在C#中,这些依赖关系是使用' References':
设置的
当我发现时,我很惊讶这个选项也适用于C ++项目!
事实上,在我创建示例解决方案并以这种方式设置依赖关系之后,一切都运行良好,没有任何其他配置,例如"链接器输入"什么的。
我的问题是:此选项完全对C ++项目有什么作用?我对所有利润和潜在的权衡感兴趣。
我已经知道,它会导致其他项目的链接输出设置为依赖项。还要别的吗?也许参考模块之间有一些运行时依赖?它如何影响生成的输出?
答案 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节点。右键单击它以添加对另一个项目的引用。