在C ++中使用第三方库

时间:2012-07-03 05:32:56

标签: c++ static-libraries codeblocks

我完全在转动我的轮子,让几个第三方库与我的c ++程序一起工作。我正在寻找一些关于实施库时需要采取的一般步骤的一般建议(40,000英尺级)。

首先,一些细节:我在Windows中使用code :: blocks作为我的IDE。我喜欢这个IDE,如果我不需要,我真的不想切换到其他任何东西(我已经尝试过visual c ++以及linux中的一些东西)。我尝试使用的库是GMP和crypto ++。

行。我所知道的我知道的是:下载库后,我将文件解压缩到一个文件夹。我已经直接解压缩到C:\,每个zip文件被解压缩到它自己的文件夹(例如c:\ cryptopp和c:\ gmp)。我认为下一步是建立库,但这是我完全卡住的地方。这是怎么做到的?提取的文件中没有可执行文件。据我所知,我相信我在code :: blocks中这样做,但我不知道怎么做?

最后,假设我可以完成这个,我相信创建.lib文件,在我的代码中实际使用库之前的最后一步是链接到库。这部分,我相信我理解。

所以,我的问题很广泛:我是否完全理解这个过程?如果是这样,我该如何构建这些库,如果实际上它是我遗漏的东西。

非常感谢你放纵我的无知。我现在完全没有舵,尽管在谷歌上花了好几个小时,但我没有取得任何进展。另外,请随意更正我所说的任何不正确的事实。非常感谢!

2 个答案:

答案 0 :(得分:1)

通常,库中有一个名为makefile的特殊文件,它使用一个名为Make的实用程序构建(或其中一个变体,无论是uder窗口)。 通常,您所要做的就是在已解压缩源文件的目录中运行Make,它将自行完成其余工作。

答案 1 :(得分:1)

如果你提到的那些库(GMP和crypto ++;免责声明:我不熟悉其中任何一个)没有code :: blocks的项目文件,那么你仍然可以在Windows下用MinGW编译它们。

如果您安装了MinGW,则使用MinGW shell导航到示例中的/c/cryptopp//c/gmp相应的目录 - MinGW shell的工作方式类似于Unix shell,并具有不同的命名约定。

然后你需要编译库。检查那些目录中是否有Makefile,如果没有,可以检查是否有configure脚本,这将生成Makefile。如果你有Makefile,你可以输入make,它将使用MinGW的GCC编译器端口编译库。

编译完成后,你应该有一个.a文件形式的库(比如libcryptopp.a),你可以链接到你的项目。在code :: blocks中,您可以将链接器路径(GCC中的-L命令行选项)设置为C:\cryptopp\bin或编译库的任何位置,然后将libcryptopp.a添加到列表中要链接的库(这与GCC中的-l选项相关联)。惯例是省略lib前缀和.a扩展名,因此您只需将cryptopp添加到库列表中。最后,您的链接器选项应与-LC:\cryptopp\bin -lcryptopp一起显示为

此外,为了能够使用库,您需要将headers目录的路径添加到项目的包含路径中。这与GCC中的-I命令行选项相关联,因此编译器的命令行选项会在某处出现-IC:\cryptopp\include

当然,以上所有假设您都使用带有GCC的code :: blocks。如果您在VisualC ++中使用它,那么原则是相同的,但具体步骤不同。