美好的一天,先生们。我正在尝试连接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,其中包括 和,因此我建议采用相同的版本。nghttp2opensslzlibzlib为了使 Code::Blocks 中的项目可移植,最好不要将指定的库及其标头复制到 MinGW 目录,而是复制到项目文件夹中的某个位置(例如,复制到
lib和文件夹include)。接下来,您需要打开项目设置
Project - Build options并注册:Compiler settings - #defines:CURL_STATICLIBSearch Directories - Compiler: -库标题 ( ) 的include相对/绝对路径.hSearch Directories - Linker: -库的库(文件)的lib相对/绝对路径.aLinker settings - Link libraries:curl,ssl,crypto,ssh2,nghttp2,z,ws2_32,winmm,wldap32,crypt32- 链接库。观察链接库的顺序非常重要!实际上,仅此而已,您可以收集:
结果,我们得到了一个相当大的
exe文件,但它只依赖于系统库。