如何在Visual Studio 2012中包含库?

38

我几天前开始学习C++,希望能获取一些数据使学习更有趣。我发现了一个名为Unirest的强大C++库,可以帮助我从许多API中获取数据,在练习基础知识后 :)

我不知道如何将库包含到我的项目中。我找到了一些关于如何操作的视频,所以我创建了libs文件夹(就像在编写PHP时一样),并复制了库文件。然后,我将头文件UNIRest.h包含到我的源代码中,并在项目属性 - 配置属性 - VC+目录的VS+目录选项中添加了libs目录。一切仍然正常。但当我打开头文件UNIRest.h时,问题出现了:

#import "UNIHTTPRequest.h"
#import "UNIHTTPRequestWithBody.h"
#import "HttpRequest/UNISimpleRequest.h"
#import "HttpRequest/UNIBodyRequest.h"
#import "HttpResponse/UNIHTTPBinaryResponse.h"
#import "HttpResponse/UNIHTTPJsonResponse.h"
#import "HttpResponse/UNIHTTPStringResponse.h"

所有这些宏都被下划线标记,并且编译失败,出现以下消息:

fatal error C1083: Cannot open type library file: 'libs\unirest\unihttprequest.h': Error loading type library/DLL.

你能帮我吗?希望这不是一个愚蠢的问题,因为我整个下午都在试图让它工作 :(


6
我认为这里有个问题。你选择的库是用Objective-C编写的,而它与C++是不同的编程语言。Objective-C主要在Mac上使用,虽然我不能确定它是否可以与Visual Studio一起使用(我不清楚),但我认为最好使用另一个库会更靠谱。 - john
2
在C和C++中,你需要使用#include头文件。但正如@john所说,这个库没有C++版本。因此,你需要尝试不同的库(或者切换语言:)。 - crashmstr
我曾认为C++是带有OOP支持的C语言,所以对我来说它似乎是一样的,我的天啊:D好吧,如果不行,我会尝试使用另一个库并更改问题。你有像Unirest-API调用这样的库吗?我会尝试使用它。 - Northys
2个回答

91

通常您需要执行以下5个步骤才能将库包含到您的项目中:

1)添加#include语句以包含必要的声明/接口文件,例如:

#include "library.h"

2) 为编译器添加一个包含目录以便查找

-> 配置属性/VC++ 目录/包含目录(点击并编辑,添加一个新条目)

3) 添加一个库目录以供使用 *.lib 文件:

-> 项目(在顶部菜单栏中)/属性/配置属性/VC++ 目录/库目录(点击并编辑,添加一个新条目)

4) 链接 lib 的 *.lib 文件

-> 配置属性/链接器/输入/附加依赖项(例如:library.lib;

5) 将 *.dll 文件放置在:

-> 您将从中打开最终可执行文件的目录中 或者 放置在 Windows/system32 中


1
谢谢。我选择了一个不支持C++的库。无论如何,这对我将来很有用。+1 - Northys
2
如果第5步在system32目录下无法运行,请尝试将其放入SysWOW64目录中。 - user886079
2
在Visual Studios 2013中,要进入“配置属性”:首先右键单击项目,然后转到“添加->引用...”。 - Joe
我该如何像这样包含整个文件?我已经下载了此目录,并希望为所有文件添加依赖项。https://github.com/mindboards/ev3sources/tree/master/lms2012 - Karoh
在编辑VS项目属性时,请确保选择了正确的配置和平台(或使用“全部”选项,确保更改生效,如果您没有使用多个配置)。这个疏忽让我浪费了几个小时的时间...(包括查看.vcxproj文件并尝试手动编辑它们,以及问自己为什么它们的内容与VS显示的项目属性不匹配) - Adomas Baliuka
显示剩余2条评论

7
在代码层面上,您可以使用编译器指令#pragma将您的库添加到项目中。
例如:
#pragma comment( lib, "yourLibrary.lib" )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接