【问题标题】:How to include libraries in Visual Studio 2012?如何在 Visual Studio 2012 中包含库?
【发布时间】:2013-12-02 06:10:14
【问题描述】:

几天前我开始学习 C++,我想获取一些数据让它更有趣。我发现a powerful C++ library called Unirest 可以帮助我从许多 API 中获取数据,并在练习基础知识后:)

我不知道如何将库包含到我的项目中。我喜欢一些关于如何做到这一点的视频,所以我刚刚创建了libs 文件夹(就像我在 PHP 中编程时经常做的那样)并复制了库文件。在我将头文件UNIRest.h 包含到我的源代码中并将libs 目录添加到项目属性 - 配置属性 - VC+ 目录 中的 VS+ 目录选项之后。一切都还可以。但是当我打开头文件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.

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

【问题讨论】:

  • 我觉得这里有问题。您选择的库是为 Objective-C 编写的,它是与 C++ 不同的语言。 Objective-C 主要在 Mac 上使用,我不能肯定地说它不可能与 Visual Studio 一起工作(我不知道),但我认为你会发现使用不同的库是一个更好的选择.
  • 在 C 和 C++ 中,#include 头文件。但正如@john 所说,这个库没有 C++ 版本。所以你需要尝试不同的库(或切换语言:)
  • 我认为 C++ 是支持 OOP 的 C,所以对我来说似乎是一样的,天哪不工作。你有像 Unirest 这样的库 - API 调用吗?我会尝试使用它。

标签: c++ visual-studio-2012


【解决方案1】:

通常你需要做 5 件事来在你的项目中包含一个库:

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

#include "library.h"

2) 添加一个包含目录供编译器查看

-> Configuration Properties/VC++ Directories/Include Directories(点击编辑,添加新条目)

3) 为 *.lib 文件添加库目录:

-> 项目(顶部栏)/properties/Configuration Properties/VC++ Directories/Library Directories(点击编辑,添加新条目)

4) 链接 lib 的 *.lib 文件

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

5) 放置 *.dll 文件:

-> 在您将要从 打开最终可执行文件到 Windows/system32 的目录中

【讨论】:

  • 谢谢。我选择了不支持 C++ 的库。无论如何,这对我将来会有用。 +1
  • 如果第 5 步对 system32 目录不起作用,请尝试将其放入 SysWOW64 目录。
  • 在 Visual Studios 2013 中,要进入配置属性:首先右键单击项目,然后转到添加->引用...
  • 我将如何包含大量这样的文件?我已经下载了这个目录并想为所有这些添加依赖项? github.com/mindboards/ev3sources/tree/master/lms2012
  • @Horak:这些似乎只是源文件,所以最好的办法是首先创建一个项目(或具有多个项目的解决方案)并将它们编译成库,然后按照说明进行操作更多。另一种方法是使用库和最终项目创建解决方案,然后使用解决方案属性简单地配置依赖关系。
【解决方案2】:

在代码级别,您也可以使用编译器指令#pragma将您的库添加到项目中。

示例:

#pragma comment( lib, "yourLibrary.lib" )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多