美好的一天,先生们。我正在尝试连接libcurl.a
到 Code::Blocks MinGW 中的项目。我在 lib 中删除了 include 和 .a 文件中的标头,我规定了链接#define
和参数,-static
但没有任何反应,因为有一个错误说curl_easy_init()
找不到它,它是。
那么,有没有关于将静态库准确连接到 C 项目的详细说明。
美好的一天,先生们。我正在尝试连接libcurl.a
到 Code::Blocks MinGW 中的项目。我在 lib 中删除了 include 和 .a 文件中的标头,我规定了链接#define
和参数,-static
但没有任何反应,因为有一个错误说curl_easy_init()
找不到它,它是。
那么,有没有关于将静态库准确连接到 C 项目的详细说明。
连接静态库的特殊之处在于,除了连接库本身之外,还可以连接其所有依赖项,而这些依赖项又可以作为静态库和 dll 进行连接。
至于 exactly
libcurl
,根据编译它的选项,这个库可能依赖于一大堆第三方库(除了系统库)。正如我已经在这里
libcurl
推荐的那样,可以在这个存储库中找到已编译的及其依赖项: https ://bintray.com/vszakats/generic要静态链接此版本,您将需要该存储库中
curl
的另外 3 个库:libssh2
、、。此外,对于组装,您将需要. 要构建所有库,使用MinGW-w64 版本 6.2.0,其中包括 和,因此我建议采用相同的版本。nghttp2
openssl
zlib
zlib
为了使 Code::Blocks 中的项目可移植,最好不要将指定的库及其标头复制到 MinGW 目录,而是复制到项目文件夹中的某个位置(例如,复制到
lib
和文件夹include
)。接下来,您需要打开项目设置
Project - Build options
并注册:Compiler settings - #defines
:CURL_STATICLIB
Search Directories - Compiler
: -库标题 ( ) 的include
相对/绝对路径.h
Search Directories - Linker
: -库的库(文件)的lib
相对/绝对路径.a
Linker settings - Link libraries
:curl
,ssl
,crypto
,ssh2
,nghttp2
,z
,ws2_32
,winmm
,wldap32
,crypt32
- 链接库。观察链接库的顺序非常重要!实际上,仅此而已,您可以收集:
结果,我们得到了一个相当大的
exe
文件,但它只依赖于系统库。