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.0\vs,下面有三个目录,如图:
按照自己vs版本选择一个目录,由于没有vc9的,我选择vc8,持枪直入,找到vc8libcurl.vcproj这个项目文件,直接打开,如果提示版本转换就让他转换。
三、转换后打开工程,如果直接就编译,会出“无法打开目录或文件 xxx.h”的错误,这时候需要在项目——属性中更改附加目录路径为“..\..\..\Include”,debug和release路径都一样,下图是debug的:
这时候Debug和Release编译就可以在 curl-7.31.0\vs\vc8\lib目录下的Debug和Release下分别生成对应版本的lib文件。
四、使用静态库。新建一个控制台工程。将curl-7.31.0\include下的cur目录拷贝到工程cpp所在目录下,在工程文件xxx.sln文件所在目录下建立两个文件夹,Debug和Release(就是编译后生成exe的文件夹,由于还没有编译过,所以还没有这些文件夹)如图:
将curl-7.31.0\vs\vc8\lib\Debug(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
最新文章
- USB Host的上拉下拉电阻
- XMPP开发环境配置
- Android锁屏后数据改变的解决方案
- Leetcode: Android Unlock Patterns
- 简单的比大小 shell 脚本和ping
- jquery中使用event.target的几点
- @RequestMapping详解
- NOIP2010普及组T4 三国游戏——S.B.S.
- Shell Script-读取配置文件
- C#中jQuery Ajax实例(二)
- Java- Jdbc学习
- VC的UNICODE 编程
- java常量和变量的定义规则,变长参数的使用
- 变态版大鱼吃小鱼-基于pixi.js 2D游戏引擎
- servlet之ServletRequest与ServletResponse (三)
- Vue 制作简易计算器
- 第一章:深入.NET框架
- python使用cx_Oracle在Linux和Windows下的一点差异
- Mac下安装Eclipse和Tomcat等
- 03-java学习-基本数据类型-运算符-键盘接收用户输入
热门文章
- [Android] 输入系统(三):加载按键映射
- 324篇CSS应用效果集合(梦想天空,可同时应用于Web开发与Qt界面开发)
- Xen、KVM和VirtualBox比拼
- 【转】Android 带checkbox的listView 实现多选,全选,反选 -- 不错
- SQL Standard Based Hive Authorization(基于SQL标准的Hive授权)
- (转载)php之call_user_func_array的简易用法
- 如何获取jqGrid中选择的行的数据
- POJ-1200(哈希)
- HDU 3853 LOOPS
- 16个不错的git别名