如何在不将库源代码添加到我的项目中的情况下将库链接到 CodeBlocks 和 GCC 中的项目



我正在编写一个使用hashlib++库的程序(或将使用它),但我不想将它的所有源文件添加到我的项目中,因为它很大。有没有链接到hashlib++源文件,这样我就可以在我的项目中使用它?我试着用一个简单的直接链接到标题

#include "path/to/hashlibpp.h"

但是,当我试图从库中调用任何函数时,我就会收到一个漂亮的错误。例如:

undefined reference to `sha1wrapper::sha1wrapper()

我使用的是Code::Blocks IDE和GCC编译器。

首先,您必须在机器上安装库,并将其编译为静态或动态库文件。您可以从源代码安装,也可以找到适用于您的操作系统的预构建包(取决于您使用的操作系统)。你需要知道图书馆的名字。

在hashlib++的情况下,他们在README中提供了从源代码构建静态库的说明;参见第3.2节。

在大多数情况下,动态链接是最佳选择。这意味着库在运行时与库链接,而不是在编译可执行文件时将库添加到可执行文件中(这会使可执行文件变得更大)。

不幸的是,根据他们的README.txt,hashlib只能作为静态lib使用,这限制了你的选择。

当使用gcc在命令行上编译程序时,"-l"选项链接到库中:

gcc -o MyProg -lhl++ MyProg.c

当使用类似Code::Blocks的IDE时,通常必须指定要链接的库。有关如何使用代码::块执行此操作的详细信息,请参阅此答案。

相关内容

最新更新