如何使用C ++库?

时间:2017-10-24 07:59:26

标签: c++

我是一名Python开发人员,从大学开始我就没有使用过C ++。我主要是用python进行科学编程。我想尝试使用C ++来查看它是否在性能方面更好。

我是C ++的新手。我找到了dlib库,它似乎是一个很好的库,因为它有许多有趣的功能。但是当我下载它时,我发现有几个文件夹里装满了.h和.cpp文件。

在Python中,我会使用pip或其他东西安装一个想要的库,然后使用import在我的项目中使用它。

c ++库是否有类似的安装?或者我是否必须查看所有那些.h和.cpp文件,并确定我的项目中需要哪些文件然后复制它们?或者我如何使用dlib库?

我在google上搜索过很多但是我找不到有关如何使用c ++库或安装新软件包的任何说明。

如果重要的话,我使用Visual Studio Community 2017和Windows 10。

4 个答案:

答案 0 :(得分:2)

这是一个相当广泛的问题,但我会尽我所能。

首先,在C ++库中包含头文件和预编译部分(Windows上的.lib,.dll,Linux上的.a,.so)。要在项目中使用它们,您必须通知程序(和编译器)有关库具有的功能(通过#including其头文件)和链接器以包含该库二进制文件。

pip是包管理器,它可以自动下载,构建和安装系统中所需的库。在C ++中,目前没有这样的单一工具,必须或多或少地手动完成步骤。

对于下载,通常最终会使用git或下载带有源代码的zip存档(在此处执行)。一旦有了源,就必须构建它。

为了实现多平台性库,通常不附带具体的构建系统描述(Windows上的Visual Studio项目或Linux上的makefile等),但是在更通用的工具CMake中创建,它抽象出来。例如。 dlib做到了。使用CMake(首先我推荐CMake-GUI,它与Windows上的CMake一起安装),您可以生成Visual Studio Project,稍后您可以打开并编译生成.lib文件。如何按照dlib编译说明进行操作。

在磁盘上有lib和头文件后,可以将标头和.lib添加到Visual Project中,并用作任何其他C ++库。 (Seems old, but should work

答案 1 :(得分:2)

要集成库,您需要两种方法:

  • 头文件(通常为* .h),其中包含声明,以便让编译器了解库中的功能(有点类似于import语句);

  • 编译的库文件(通常为* .lib),包含预编译的可执行代码本身,让链接器汇编最终的可执行文件。

在某些情况下(特别是对于模板化代码),库只能由头文件组成。在其他情况下,包不包含现成的库文件,您必须自己构建它或手动包含项目中的源文件(* .c / cpp)。

没有谈到您可能需要调整的无数可选设置,以符合生成代码的细节,例如函数调用约定,结构对齐......

最后但并非最不重要的是,某些库仅在运行时连接到。它们被称为动态链接库,涉及不同的程序。

对于初学者来说,所有这些都相对复杂并且接近黑魔法。如果您非常幸运,您会找到一些库文档,告诉您哪些选项可用于您的编译器。如果可以,请从现有的示例项目开始!

对于dlib,请检查http://dlib.net/compile.html

与Python模块的易用性相比,为文化冲击做好准备。

答案 2 :(得分:1)

据我所知,C ++没有与pip类似的工具。您需要做的事情取决于您的工作环境和相应的图书馆。

如果dlib,Visual Studio的项目主页上有说明。基本上,它涉及通过将单个源文件复制到其中并设置包含路径来编译整个库以及您自己的项目。

来自http://dlib.net/compile.html

  

使用Visual Studio 2015或更新版本在Windows上进行编译

     

您需要做的就是创建一个空的控制台项目。然后将dlib / all / source.cpp添加到它并将包含dlib文件夹的文件夹添加到#include搜索路径。然后,您可以通过将任何示例程序添加到项目中来编译它。

     

再次注意,如果你在libjpeg和libpng中链接,dlib将只能使用jpeg和png文件。在Visual Studio中,最简单的方法是将dlib / external文件夹中的所有libjpeg,libpng和zlib源文件添加到项目中,并定义DLIB_PNG_SUPPORT和DLIB_JPEG_SUPPORT预处理程序指令。如果您不知道如何配置Visual Studio,那么您应该使用如上所示的CMake,因为它将自动处理所有内容。

答案 3 :(得分:0)

您必须下载它们,将它们放在项目目录中,然后将它们包含在几乎与在python中相同的方式。您只需要包含.h个文件。

test.h的示例:

#include "test.h"

希望这有帮助!