终于弄懂了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. (剑指Offer)面试题4:替换空格

    题目: 请实现一个函数,把字符串中的每个空格替换成“%20”,例如输入“We are happy”,则输出“We%20are%20happy”. 思路: 背景: 在网络编程中,如果URL参数中含有特殊 ...

  2. shareSDK(分享第三方库)的 使用

    首先,下载第三方库,可以去官网下载,官网的地址我忘记了,但下面有一个我之前下的和我写的例子,其实官方的例子也写我们只是告诉大家用时需要把哪些代码复制出来就可以用了. 1.导入如下框架和第三方库 新浪微 ...

  3. 【JavaScript】2013年人气最高的JavaScript框架排名

    本文概述 本文介绍2013年人气急速上升,2014年必须知道的JavaScript框架排名.本文所介绍的排名为Google根据全世界2013年的搜索关键词所做出的统计结果. MVC框架 JavaScr ...

  4. python -c 处理shell字符串

    $test="hello world" $python -c "print '$test'.split()[1]" world 或者 $test="h ...

  5. 利用JqGrid结合ashx及EF分页显示列表之二

    上一篇文章简单利用JqGrid及ashx进行一个数据列表的显示,要文的重点是利用EF的分页与JqGrid进行结合,EF本文只是简单运用所以没有很规范,重点还是JqGrid分页的实现;本实例把JqGri ...

  6. js 判断进入可视区域

      js 判断进入可视区域 CreateTime--2018年4月14日08:17:41 Author:Marydon 1.使用场景 图片懒加载时候需要用到,其他情况暂时没有遇到,欢迎留言补充! 2. ...

  7. linux 挂载 ISO 文件

    sudo sudo mount -o loop SUSE-Linux-10.1-GM-DVD-x86_64.iso /media/cdrom/ sudo umount /media/cdrom

  8. 基于微信小程序的用户列表点赞功能

    代码地址如下:http://www.demodashi.com/demo/13997.html 一.前言 (1).适合人群 1.微信小程序开发者 2.前端工程师 3.想入门学习小程序开发的人员 4.想 ...

  9. centos下node.js的安装

    安装的路径我举例在home目录 1.cd /home 2.下载node.js最新版本 wget http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz ...

  10. 用QQ帐号和新浪微博帐号登录网站

    用QQ帐号登录: 先去http://connect.qq.com/intro/login/申请   然后点击验证   将下面代码复制到网站首页中,放进去以后再点击验证就能得到ID和key 第一步:配置 ...