终于弄懂了libcurl库的编译,记下来免得忘记。

下载地址:

 
 
    注:这个在安装后,在安装目录下就有对应的  dll、include文件 和 lib 文件
    添加openssl库是为了添加 libcurl库 对 https 协议的支持
 
 
编译过程:
1、选择编译版本
    编译不同版本的libcurl需要添加不同的库支持。
    
    解压libcurl的压缩包后,进入  projects\Windows\VC10\lib 目录。打开 libcurl.sln      //你的vc版本号
    
 
 
    添加openssl支持,选择 "DLL Debug - DLL OpenSSL" 版本
 
2、添加openssl目录
    下载安装openssl目录
    2.1、创建libcurl库依赖的openssl目录,并拷贝头文件
 
    查看项目的属性
 
    注意到:
 
 
也就是说,我们需要把openssl目录下的Include/openssl文件夹 整个复制到 curl压缩包的解压目录的同级目录中。
 
 
 
至于为什么要整个openssl文件夹拷贝过去,而不是把里面的文件拷贝过去,你可以先编译一次,注意一下提示的文件结构。
 
    2.2、在openssl/lib 中 找到 libeay32.lib 和 ssleay32.lib文件 ,拷贝到 projects\Windows\VC10\lib 目录下
 
    至于为什么需要这两个文件,查看 属性/链接器/输入/附件依赖项/ ,前面两个系统自带的,后面的是我们要添加的。
 
 3、编译并使用。
    3.1、直接编译就可以得到我们需要的 libcurld.lib 和 libcurld.dll
            在 \build\Win32\VC10 路径下可以找到对应版本编译出来的库。
    3.2、使用 libcurl库 
        3.2.1、给工程添加依赖的库:项目->属性->链接器->输入->附加依赖项,把libcurl.lib ws2_32.lib winmm.lib wldap32.lib添加进去
注意,debug配置用libcurld.lib
        3.2.2、加入预编译选项:项目->属性->c/c++ ->预处理器->预处理器,把  ;BUILDING_LIBCURL;HTTP_ONLY复制进去(注意不要丢了";")
        3.2.3、libeay32.lib 和 ssleay32.lib 、libcurld.lib 拷贝到 工程.sln 所在目录
        3.2.4、libeay32.dll 和 ssleay32.dll 、libcurld.dll 拷贝到运行目录
 
    
 测试代码:
#include<iostream>
#include<string>
#include"curl/curl.h"
using namespace std; class CurlAutoRelease
{
public:
CurlAutoRelease(){ p = curl_easy_init();}
~CurlAutoRelease(){ curl_easy_cleanup(p);}
CURL *GetPtr(){ return p;}
protected:
CURL* p;
}; UINT CurlWriteBuffer(char *buffer,UINT size,UINT nmemb,std::string* stream)
{
UINT sizes = size*nmemb;
if(stream == NULL) return ;
stream->append(buffer,sizes);
return sizes;
} int main()
{
curl_global_init(CURL_GLOBAL_DEFAULT); std::string szUrl("www.baidu.com");
std::string szContent(""); try
{
CurlAutoRelease curlAutoRelease;
CURL* curl = curlAutoRelease.GetPtr();
CURLcode res; std::string strResult;
{
curl_easy_setopt(curl,CURLOPT_URL,szUrl.c_str());
curl_easy_setopt(curl,CURLOPT_VERBOSE,); //打开调试
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,szContent.c_str()); //post请求
curl_easy_setopt(curl,CURLOPT_POSTFIELDSIZE,szContent.length());
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,CurlWriteBuffer); //写回调
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&strResult); //写存储
curl_easy_setopt(curl,CURLOPT_TIMEOUT,); //最长执行时间 res = curl_easy_perform(curl);
} if(res != CURLE_OK)
{
//投递Http requeset 失败
std::cout<<"投递Http请求失败!"<<std::endl;
return -;
}
else
{
std::cout<<strResult<<std::endl;
}
}
catch (...)
{
//出Exception
std::cout<<"HttpRqWorker::HandleTask出现了Exception!!"<<std::endl;
} curl_global_cleanup();
return ;
}
    
 
 
 
 

libcurl库的编译的更多相关文章

  1. libcurl库openssl编译

    openssl编译 win32: perl Configure  no-shared VC-WIN32 --prefix=E:/lib/openssl-1.1.1 linux: ./config -f ...

  2. C++ 用libcurl库进行http通讯网络编程

    使用libcurl完成http通讯,很方便而且是线程安全,转载一篇比较好的入门文章 转载自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724 ...

  3. C++ 用libcurl库进行http通讯网络编程(转)

    转载:http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三. ...

  4. Cocos2d-x移植到WindowsPhone8移植问题-libcurl库移植问题

    在Cocos2d-x 3.x最新版本中提供了Windows Phone 8平台移植libcurl库所需要的头文件和库文件.但要在Windows Phone 8平台成功移植libcurl库还是很不容易, ...

  5. Cocos开发中Visual Studio下libcurl库开发环境设置

    我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...

  6. C++ 用libcurl库进行http通讯网络编程[转]

    http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...

  7. C/C++ 用libcurl库进行http通讯网络编程

    C/C++ 用libcurl库进行http通讯网络编程 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_p ...

  8. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

  9. HTTP多线程下载+断点续传(libcurl库)

    目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.lib ...

随机推荐

  1. hdu 4287Intelligent IME(简单hash)

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. 最短路+状态压缩dp(旅行商问题)hdu-4568-Hunter

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4568 题目大意: 给一个矩阵 n*m (n m<=200),方格里如果是0~9表示通过它时要花 ...

  3. Android + Eclipse + PhoneGap 3.4 安卓最新环境配置,部分资料整合网上资料,已成功安装.

    前言:广州花都论坛,打算推出本地服务o2o应用.快速开发手机应用,phonegap 我的小站,http://www.w30.cn/ 如果有什么问题也可以到小组留言,可以的话,贡献一个ip:) phon ...

  4. 苹果开发——设置iTunes Connect中的Contracts, Tax, and Banking

    原地址:http://zengwu3915.blog.163.com/blog/static/2783489720137485857701?suggestedreading 如果要在苹果商城发布收费应 ...

  5. JavaScript严格模式下this指向

    一般认为:严格模式下this不允许指向全局对象.是函数体是否处于严格模式! 如:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mod ...

  6. HMM隐Markov模型的原理及应用建模

    这里不讲定量的公式.(由于我也没全然弄明确.不想误人子弟)仅仅谈高速定性理解. 隐Markov模型原理 隐Markov模型(Hidden Markov Model.HMM)的实质就是:已知几种原始分类 ...

  7. [Elasticsearch] 向已存在的索引中加入自己定义filter/analyzer

    问题描写叙述 随着应用的不断升级,索引中的类型也会越来越多,新添加的类型中势必会使用到一些自己定义的Analyzer.可是通过_settings端点的更新API不能直接在已经存在的索引上使用. 在se ...

  8. python selenium 自动化测试环境安装

    注意:2.7和3.0版本的语法有些不一样 安装自动化测试软件 selenium(地址http://www.seleniumhq.org/download/) 安装步骤: 1.安装pythone运行环境 ...

  9. 纯CSS实现蜂窝六边形的个性相册

    概述 纯CSS实现蜂窝六边形的个性相册 详细 代码下载:http://www.demodashi.com/demo/12804.html 此案例主要用到CSS3的 transform 和 transi ...

  10. JavaScript:使用JavaScript 实现注册表单的校验

    说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...