编译环境win7 64 bit + vs2012
一、下载libcurl
直接下载
http://curl.haxx.se/download/curl-7.21.3.zip
vs2012打开解压目录的vc6curl.dsw
生成得到dll
二、写一个测试项目
在当前目录下写一个测试项目
test_libcurl
1、配置
配置一下工程属性(都为.\DLL-Debug\):
附加包含要也要设置一下(..\lib;..\include;.;%(AdditionalIncludeDirectories)):
附加库路径要指定一下(..\lib\DLL-Debug;%(AdditionalLibraryDirectories)):
附加依赖项加入(libcurld_imp.lib):
添加一下项目依赖:
2、加入代码
加入以下测试代码:
// test_libcurl.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include "curl/curl.h"
#define POSTURL "http://www.hao123.com"
#define FILEPATH "D:\\temp.txt"
//这是libcurl接收数据的回调函数,相当于recv的死循环
//其中stream可以自定义数据类型,这里我传入的是文件保存路径
static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *stream )
{
int len = size * nmemb;
int written = len;
FILE *fp = NULL;
if ( _access( (char*)stream, 0 ) == -1 )
{
fp = fopen( (char*) stream, "wb" );
}
else
{
fp = fopen( (char*) stream, "ab" );
}
if (fp)
{
fwrite( ptr, size, nmemb, fp );
}
return written;
}
int GetUrl( const char *url, char *savepath )
{
CURL *curl;
CURLcode res;
struct curl_slist *chunk = NULL;
curl = curl_easy_init();
if ( curl ) {
curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L );
curl_easy_setopt( curl, CURLOPT_URL, url );
//指定回调函数
curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback);
//这个变量可作为接收或传递数据的作用
curl_easy_setopt( curl, CURLOPT_WRITEDATA, savepath );
res = curl_easy_perform( curl );
if (res == CURLE_OK)
{
return 1;
}
return 0;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
if ( GetUrl(POSTURL, FILEPATH) )
{
printf( "OK\n" );
}
return 0;
}
3、编译执行
设置test_libcurl为启动项目
编译、执行:
因为使用了旧版本的fopen,所以需要在预处理器中加入_CRT_SECURE_NO_WARNINGS
再次编译执行:
把在libcurl项目中生成的这个dll放到test_libcurl\DLL-Debug中(其实是可以不放直接用项目的形式链接过去的),暂时不知道怎么弄,所以。。只能先这样拷贝过去
4、调试
做一个断点
F11就进去了
这样就可以跟踪调试libcurl了……
5、看看demo的结果:
hao123.com网页的源代码被下载下来了
整个工程连带curl源代码下载地址:http://download.csdn.net/detail/zengraoli/5659137