zoukankan      html  css  js  c++  java
  • vs2008下使用libcurl

    网上找了半天,总算找到一个比较好用的C++ 网络库,老实说,完全用Socket操作网络对于需要开发网络应用程序的人员来说还是很蛋疼很繁琐的。好在有这么一个给力的库。这个库的介绍可以自己百度一下,就我所知,php中貌似也有类似的库(不知道是不是同一个)。

    以下是我百度到的一些有参考价值的文章:

    1. LIBCURL教程  

    http://www.cnblogs.com/suiyingjie/archive/2012/11/12/2766332.html

    2.vc中编译libcurl库详解

    http://blog.csdn.net/varding/article/details/5329239

    3.vs2010 vs2008 vs2005 链接libcurl静态库

    http://blog.csdn.net/jwybobo2007/article/details/6975439

    4.VS2005中编译libcurl静态库

    http://hi.baidu.com/jjxiaoyan/item/a40e4a3ecadecec11b9696e0

    5.vc2008使用libcurl静态库

    http://blog.csdn.net/varding/article/details/5329023

    本篇文章参考了不止以上所列出的文章,由于libcurl的更新,部分文章也就只能参考一下,并不能直接搬用。

    我就以libcurl-7.31.0这个最新版本来介绍,如何编译和使用静态库,我就是在这个版本下+vs2008 sp1 win7下编译和使用成功的。

    一、首先到官网下载最新版本的libcurl源代码,地址:http://curl.haxx.se/download.html,在Source Archives栏目下有各种压缩包文件,随便下载一个,内容都是一样的,就是压缩方式不同,我这里下载 curl-7.31.0.zip (gpg) (mirror) (metalink)这个压缩包。

    二、解压缩压缩包,进入目录 curl-7.31.0vs,下面有三个目录,如图:

    点击查看原图

    按照自己vs版本选择一个目录,由于没有vc9的,我选择vc8,持枪直入,找到vc8libcurl.vcproj这个项目文件,直接打开,如果提示版本转换就让他转换。

    三、转换后打开工程,如果直接就编译,会出“无法打开目录或文件 xxx.h”的错误,这时候需要在项目——属性中更改附加目录路径为“......Include”,debug和release路径都一样,下图是debug的:

    点击查看原图

    这时候Debug和Release编译就可以在 curl-7.31.0vsvc8lib目录下的Debug和Release下分别生成对应版本的lib文件。

    四、使用静态库。新建一个控制台工程。将curl-7.31.0include下的cur目录拷贝到工程cpp所在目录下,在工程文件xxx.sln文件所在目录下建立两个文件夹,Debug和Release(就是编译后生成exe的文件夹,由于还没有编译过,所以还没有这些文件夹)如图:

    点击查看原图

    将curl-7.31.0vsvc8libDebug(Release)下生成的vc8libcurl.lib文件分别拷贝到刚刚新建的对应文件夹中,然后在工程的项目——属性中将附加库目录修改为“..Debug和..Release”(当然拷贝到其他文件夹也可以,不设置附加目录也行,只要程序编译的时候能找到就行了)。

    五、给工程添加依赖的库:项目->属性->链接器->输入->附加依赖项,把ws2_32.lib winmm.lib wldap32.lib添加进去

    六、加入预编译选项:项目->属性->c/c++ ->预处理器->预处理器,把  ;BUILDING_LIBCURL;HTTP_ONLY复制进去(注意不要丢了";")

    注意:五六两个步骤在Debug和Release都要设置。

    七、测试代码(网上找的)

    #include "stdafx.h"
    #include <Windows.h>
    #include "curl/curl.h"
    #pragma comment(lib,"libcurl.lib")
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	CURL *curl;
    	CURLcode res;
    
    	curl = curl_easy_init();
    	if(curl) {
    		curl_easy_setopt(curl, CURLOPT_URL, "http://2345.com/?kduba");
    
    		res = curl_easy_perform(curl);
    		curl_easy_cleanup(curl);
    	}
    	getchar();
    	return 0;
    }

    八、测试结果:

    点击查看原图

    refer:http://aigudao.net/?post=100

  • 相关阅读:
    Netty源码解析 -- 内存对齐类SizeClasses
    Netty源码解析 -- 零拷贝机制与ByteBuf
    Netty源码解析 -- ChannelOutboundBuffer实现与Flush过程
    Netty源码解析 -- ChannelPipeline机制与读写过程
    Oracle体系结构概述与SQL解析剖析
    SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期
    SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期
    shiro入门学习--授权(Authorization)|筑基初期
    shiro入门学习--使用MD5和salt进行加密|练气后期
    Shiro入门学习---使用自定义Realm完成认证|练气中期
  • 原文地址:https://www.cnblogs.com/devc/p/3651298.html
Copyright © 2011-2022 走看看