在C#中添加一个将构建依赖项的项目引用非常简单,将生成的程序集放在原始的Debug /目录中并正确编译该程序集。
所以目前,我在一个解决方案中有一个带有Main()和静态库项目的项目。但是,当我编译Main()项目并查看bin / Debug /目录时,我找不到Static.lib文件或.obj文件,我认为需要在那里,或者其他东西。我收到链接器错误。
我想也许我必须配置项目来查找静态库项目生成的.obj和.lib文件(编译得很好,实际上会生成这些文件。)
我遗漏了一些东西,而且我对使用C ++的Visual Studio不是很精通。
如何在Main项目中添加引用以使用静态库项目生成的库?
答案 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
。$(SolutionDir)\Bin\$(Configuration)\$(PlatformTarget)\MyLibrary.lib
#define DllExport __declspec(dllexport)
外部“ C”无效DllExport WINAPI` Testing();
在调用函数的实际cpp文件中,我添加了以下内容:
#include“ .. \ MyLibrary \ mylibrary.h”
然后在实际的调用函数中。只需添加被调用的函数:
Testing();
答案 4 :(得分:0)
如果您在同一个解决方案中构建多个项目,请使用项目引用自动将您的库和可执行文件链接在一起:
这里解释得很好:
https://milania.de/blog/Project_references_in_Visual_Studio_and_C%2B%2B
这种方法的优点是构建顺序是正确的。正如其他答案中所建议的那样,使用其他依赖项不会保持正确的构建顺序。