- 获取源码
下载 解压 tar -zxvf curl-7.56.0.tar.gz
- 使用vs2005打开工程,根据需求打开相应的工程
编译libcurl和curl D:\curl-7.56.0\projects\Windows\VC8\curl-all.sln
如果只编译libcurl,只需要打开 D:\curl-7.56.0\projects\Windows\VC8\lib\libcurl.sln
- 编译libcurl
编译libcurl工程时输出提示 1>d:\curl-7.56.0\lib\ssh.h(28) : fatal error C1083: 无法打开包括文件:“libssh2.h”: No such file or directory 看一下预处理器定义 _DEBUG BUILDING_LIBCURL DEBUGBUILD USE_OPENSSL USE_LIBSSH2 HAVE_LIBSSH2_H
如果不需要不使用libssh,可以将ssl相关的预处理宏,即删除以下预处理宏: USE_OPENSSL USE_LIBSSH2 HAVE_LIBSSH2_H
默认是编译动态库,如果需要编译静态库,需要做以下处理: 解决方案配置修改成 LIB Debug, 配置类型修改为静态库(.lib), 编译libcurl,生成libcurld.lib
- 测试
新建代码测试工程, 添加D:\curl-7.56.0\include\curl文件夹内所有头文件, 添加libcurld.lib, 使用静态库需要修改预处理器定义 CURL_STATICLIB 附加依赖项添加 ws2_32.lib wldap32.lib libcurld.lib
#include#include "curl/curl.h"int main(void){ CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/"); res = curl_easy_perform(curl); if(CURLE_OK == res) { char *ct; /* ask for the content-type */ res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct); if((CURLE_OK == res) && ct) printf("We received Content-Type: %s\n", ct); } /* always cleanup */ curl_easy_cleanup(curl); } return 0;}
代码出处见 getinfo Use getinfo to get content-type after completed transfer.
方法二:
使用cmake