【问题标题】:MSVC Dependencies vs. ReferencesMSVC 依赖与参考
【发布时间】:2010-02-23 08:55:19
【问题描述】:

我一直使用 Visual Studio 依赖项选项来确保,例如,在构建我的 C++ 项目时,任何依赖的 LIB 或 DLL 项目也会被构建。然而,我不断听到人们提到“参考”,并且想知道,随着 VS 2010 的出现,我应该改变我的做法。

使用对依赖项的引用有什么好处,还是前者只是 .NET 功能?我目前正在使用 VS2008。

【问题讨论】:

    标签: c++ visual-c++


    【解决方案1】:

    我更喜欢使用引用,因为这些是在 VS 2005 中为非托管 C++ 引入的。不同之处(从非托管 C++ 开发人员的角度来看)是引用存储在 .vcproj 文件中,而项目依赖项存储在.sln 文件。

    这种差异意味着当您在不同的解决方案中重用您的项目时(我经常这样做),您不需要再次重新定义项目间的关系。

    Visual Studio 足够聪明,在建立引用关系时不会严重依赖项目的路径。

    【讨论】:

    • 我不知道您可以让本机 C++ 项目引用其他本机 C++ 项目。我认为它提供了一个比“项目依赖项...”对话框更好的描述依赖项的界面(唯一的缺点是您必须为每个项目单独打开它,但这是一个非常小的问题)。
    • +1:当对 .vcproj 文件进行小改动而不是对 .sln 文件进行大改动时,对解决方案中其他项目的引用也更利于版本控制。
    • 这是一个很好的答案,因为它也展示了相反的情况——您可以在不链接依赖关系的情况下拥有依赖构建顺序。例如,我正在创建一个 DLL,它将按需加载,而不是立即与 EXE 一起加载。
    【解决方案2】:

    过去在 VS2008 中,项目对静态库的依赖会自动导致正确的配置(调试|发布)被链接。看起来 VS2010 在迁移到 msbuild 后失去了这种能力。叹息。

    【讨论】:

    • 没有丢失,您可以在Visual Studio 2015中点击参考后在属性窗口中更改这些选项
    【解决方案3】:

    'References' 是 .NET 的东西,不适用于本机 C++;它们与依赖项目不同。解决方案中的依赖项目是必须在另一个项目之前(或之后取决于依赖项的方式)构建的项目。

    引用是包含项目中使用的类型的程序集。本机 C++ 项目中的类似事物可能是项目使用的包含文件和链接的 .lib 文件(本机 C++ 项目“使用”这些项目,即使它们不是在解决方案的另一个步骤中构建的) .

    【讨论】:

    • -1 引用确实适用于本机 c++,并且与托管版本中的行为几乎相同。它强制对项目建立“依赖关系”(总是首先构建引用的项目)并将项目的输出添加到链接器。这意味着您在链接时不必摆弄库路径和名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多