如何在Visual Studio中添加C ++项目引用?

时间:2013-01-30 16:31:53

标签: c++ visual-studio project

在C#中添加一个将构建依赖项的项目引用非常简单,将生成的程序集放在原始的Debug /目录中并正确编译该程序集。

所以目前,我在一个解决方案中有一个带有Main()和静态库项目的项目。但是,当我编译Main()项目并查看bin / Debug /目录时,我找不到Static.lib文件或.obj文件,我认为需要在那里,或者其他东西。我收到链接器错误。

我想也许我必须配置项目来查找静态库项目生成的.obj和.lib文件(编译得很好,实际上会生成这些文件。)

我遗漏了一些东西,而且我对使用C ++的Visual Studio不是很精通。

如何在Main项目中添加引用以使用静态库项目生成的库?

5 个答案:

答案 0 :(得分:4)

你需要解决的第一件事是,静态库与.NET程序集完全不同。它们链接到.exe中,不作为单独的实体分发。

您的链接器错误很可能是因为您没有链接到库。

有几种方法可以定义必须链接的库。 一个是在链接器 - >下的项目设置中。输入 - >其他依赖, 另一个是通过#pragma comment(lib, "path to library")

的便宜路线

答案 1 :(得分:3)

您可以通过项目属性添加所需的.lib文件名称 - >链接 - >输入 - >附加依赖项

然后,您必须将您的库所在的文件夹放在VC ++目录 - >图书馆指令中。

答案 2 :(得分:3)

以下是一个非常全面的答案:visual c++: #include files from other projects in the same solution

它描述了链接器的设置,以及引用另一个C ++项目时的其他基本要素。 (特别是来自C#但不熟悉C ++)

答案 3 :(得分:0)

在.NET中,设计目标之一是使此过程更加轻松和自动化。任务在那里完成。

在本地C ++世界中,该过程更加手动。这大致是我将不同模块连接在一起的过程。

  • 在解决方案中包括所有相关模块。
  • 设置输出 每个项目的目录都移到同一目录。右键单击 在每个项目上,选择属性,然后通常设置输出 目录到:$(SolutionDir)\Bin\$(Configuration)\$(PlatformTarget)。 为了减少头痛,请为所有配置和平台设置此项。 然后将所有文件放在类似 \your-solution\bin\Debug\x64
  • 设置项目依赖项-右键单击将链接到另一个项目的每个项目->选择“ Build Dependencies”并选择引用的项目。
  • 设置链接过程,方法是右键单击调用的项目并选择 属性。转到链接器->输入并添加:$(SolutionDir)\Bin\$(Configuration)\$(PlatformTarget)\MyLibrary.lib
  • 对于要链接的实际功能,我设置了 函数声明类似(函数声明有很多变体,这里有点超出范围):

#define DllExport __declspec(dllexport)

外部“ C”无效DllExport WINAPI` Testing();

  • 在调用函数的实际cpp文件中,我添加了以下内容:

    #include“ .. \ MyLibrary \ mylibrary.h”

  • 然后在实际的调用函数中。只需添加被调用的函数:

    Testing();

答案 4 :(得分:0)

如果您在同一个解决方案中构建多个项目,请使用项目引用自动将您的库和可执行文件链接在一起:

https://docs.microsoft.com/en-us/visualstudio/msbuild/common-msbuild-project-items?view=vs-2019#projectreference

这里解释得很好:

https://milania.de/blog/Project_references_in_Visual_Studio_and_C%2B%2B

这种方法的优点是构建顺序是正确的。正如其他答案中所建议的那样,使用其他依赖项不会保持正确的构建顺序。