如何在不将库源代码添加到我的项目中的情况下将库链接到 CodeBlocks 和 GCC 中的项目
How do I link a library to my project in CodeBlocks & GCC without adding the library source to my project
我正在编写一个使用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时,通常必须指定要链接的库。有关如何使用代码::块执行此操作的详细信息,请参阅此答案。
相关文章:
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- 类(可能是代理)的命名,允许在不修改基础容器的情况下对项目进行排序和删除
- 我可以在不创建项目的情况下在Visual Studio 2019中编译和运行HelloWorld.cpp吗?
- 如何在不受其他文件影响的情况下"by itself" Visual Studio 项目中运行C++文件?
- 在我的 CLR 项目中添加包含会导致无法在启用 /clr 的情况下编译 WLR
- 如何在不创建新配置的情况下对两个不同解决方案使用的一个项目使用不同的 #defines
- 如何在不制作Visual Studio 2017项目的情况下编译C++文件?
- 通过CMake在没有Qt Creator的情况下构建Qt5 Quick项目
- 如何在没有QT项目的情况下使用Visual Studio中的QT资源文件
- 如何在不复制的情况下将C++类从一个项目重用到另一个项目
- Eclipse CDT:如何在没有项目清理>>项目重建的情况下重新链接静态库
- 我的项目如何在没有提示的情况下不抱怨未解决的未支出
- Visual Studio:如何在没有控制台窗口的情况下启动项目
- 如何在不将库源代码添加到我的项目中的情况下将库链接到 CodeBlocks 和 GCC 中的项目
- 在不安装 Visual Studio 的情况下编译 Visual Studio 项目
- 有没有一种方法可以在不重建任何项目的情况下重新链接解决方案
- 在没有项目的情况下使用 Dev c++ 在窗口中绘制文本
- 在不引入错误的情况下转换项目
- 在没有第三方工具/项目的情况下,在 MFC C++发布版本中查找内存泄漏