win7+vs2012编译、使用libcurl获取网页源代码

编译环境win7 64 bit + vs2012

一、下载libcurl

直接下载

http://curl.haxx.se/download/curl-7.21.3.zip


vs2012打开解压目录的vc6curl.dsw

生成得到dll

win7+vs2012编译、使用libcurl获取网页源代码_第1张图片


二、写一个测试项目

在当前目录下写一个测试项目

test_libcurl

1、配置

配置一下工程属性(都为.\DLL-Debug\)

win7+vs2012编译、使用libcurl获取网页源代码_第2张图片



附加包含要也要设置一下(..\lib;..\include;.;%(AdditionalIncludeDirectories))




附加库路径要指定一下(..\lib\DLL-Debug;%(AdditionalLibraryDirectories)):




附加依赖项加入(libcurld_imp.lib):




添加一下项目依赖:

win7+vs2012编译、使用libcurl获取网页源代码_第3张图片



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




再次编译执行:

win7+vs2012编译、使用libcurl获取网页源代码_第4张图片



把在libcurl项目中生成的这个dll放到test_libcurl\DLL-Debug中(其实是可以不放直接用项目的形式链接过去的),暂时不知道怎么弄,所以。。只能先这样拷贝过去

4、调试

做一个断点

win7+vs2012编译、使用libcurl获取网页源代码_第5张图片
win7+vs2012编译、使用libcurl获取网页源代码_第6张图片



F11就进去了

win7+vs2012编译、使用libcurl获取网页源代码_第7张图片


这样就可以跟踪调试libcurl了……


5、看看demo的结果:

win7+vs2012编译、使用libcurl获取网页源代码_第8张图片


hao123.com网页的源代码被下载下来了


整个工程连带curl源代码下载地址:http://download.csdn.net/detail/zengraoli/5659137



你可能感兴趣的:(win7+vs2012编译、使用libcurl获取网页源代码)