在C++中使用第三方库
Using 3rd Party Libraries in C++
我完全在旋转我的轮子,让几个第三方库与我的c ++程序一起工作。我正在寻找一些关于实施库时需要采取的一般步骤的一般建议(40,000 英尺水平)。
首先,一些细节:我在Windows中使用code::blocks作为我的IDE。我喜欢这个IDE,如果没有必要,我真的不想切换到其他任何东西(我已经尝试了Visual c ++以及linux中的一些东西)。我尝试使用的库是GMP和crypto++。
还行。我想我知道的是:下载库后,我将文件解压缩到一个文件夹中。我一直在直接解压缩到 C:\将每个 zip 文件提取到其自己的文件夹中(例如 C:\Cryptopp 和 C:\GMP)。我认为下一步是构建库,但这是我完全陷入困境的地方。这是怎么做到的?提取的文件中没有可执行文件。据我所知,我相信我在 code::blocks 中这样做,但我不知道怎么做?
最后,假设我可以完成这项工作,我相信它会创建 .lib 文件,那么在我的代码中实际使用该库之前的最后一步是链接到库。这部分,我相信我明白了。
所以,我的问题是广泛的:我是否全面了解这个过程?如果是这样,我该如何去构建这些库,如果事实上这是我缺少的东西。
非常感谢你放纵我的无知。我现在完全没有方向舵,尽管在谷歌上呆了几个小时,但我没有任何进展。另外,请随时更正我所说的任何不正确的事实。多谢!
通常库中有一个名为makefile的特殊文件,并使用名为Make的实用程序(或其变体之一,无论在Windows上工作)构建。通常您所要做的就是在解压缩源文件的目录中运行 Make,它将自行完成其余工作。
如果您提到的那些库(GMP 和 crypto++;免责声明:我不熟悉它们中的任何一个)没有 code::blocks 的项目文件,那么您仍然可以使用 MinGW 在 Windows 下编译它们。
如果您已经安装了MinGW,则可以使用MinGW shell导航到相应的目录,这些目录将在您的示例中/c/cryptopp/
和/c/gmp
- MinGW shell的工作方式类似于Unix shell,并且具有不同的命名约定。
然后,您需要编译库。检查这些目录中是否有生成文件,如果没有,可以检查是否有configure
脚本,该脚本将生成生成生成文件。如果你有Makefile,你可以输入make
它将使用MinGW的GCC编译器端口编译库。
编译完成后,您应该有一个.a文件(例如libcryptopp.a
)形式的库,您可以链接到您的项目。在 code::blocks 中,您可以将链接器路径(GCC 中的-L
命令行选项)设置为C:cryptoppbin
或编译库的任何位置,然后将libcryptopp.a
添加到要链接的库列表中(这与 GCC 中的-l
选项相关联)。约定是省略 lib 前缀和 .a 扩展名,因此您只需将cryptopp
添加到库列表中。最后,链接器选项应-LC:cryptoppbin -lcryptopp
与
此外,为了能够使用这些库,您需要将标头目录的路径添加到项目的包含路径中。这与 GCC 中的-I
命令行选项相关联,因此编译器的命令行选项在某处具有类似-IC:cryptoppinclude
的内容。
当然,以上所有假设你使用 code::blocks 和 GCC。如果将其与 VisualC++ 一起使用,则原理相同,但具体步骤不同。
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 如何包装第三方DLL在R中使用
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 第三方 API 中的编译错误 - Visual Studio
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 从第三方定义的类继承时shared_from_this
- Qt应用程序找不到第三方DLL并崩溃
- CMake 包含非 cmake 库的第三方标头
- 我可以将c ++清理器仅应用于程序的一部分而不是第三方库吗?
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- 为什么无法覆盖涉及第三方代码的模板类的运算符<<?
- Android NDK - C++ 异常会导致第三方原生库崩溃
- 与第三方公共图书馆/代码接口
- 减少第三方库的导出符号
- 如何从支持linux/mac操作系统的第三方代码为我的c#项目创建dll
- 如何调试visual studio 2017生成的C++代码.android中的SO文件和其他第三方库
- C++如何组织(管理)第三方库
- C++第三方库 typedef 与标准 stdin.h 冲突
- 有选择地禁用第三方库的C++核心准则检查器