1、VS2010编译OpenSSL

2、VS2010编译Zlib

3、VS2010编译libcurl_openssl_zlib

4、配置libcurl_openssl_zlib

建立如下图所示的目录结构:

ssl目录下存放的是编译openssl时得到的openssl.cnf文件。

bin目录下存放编译得到的exe文件,如下图所示:

Include目录下存放头文件,如下图所示:

Lib目录下存放静态库库及pdb文件,如下图所示:

为了便于使用编译好的静态库,新建一个名为libcurl_openssl_zlib_lib_include.h的头文件,所有使用该库的地方直接包含该头文件即可。该头文件中包含了使用库所需要的头文件,以及使用宏确定编译时需要导入的静态库。

由于openssl库本身的头文件相互包含时不是使用的相对路径,所以必须把目录\libcurl_openssl_zlib_vc10_x86_static_lib\include添加到Additional Include Directories配置项中,建议使用相对于使用项目的相对路径。

把目录\libcurl_openssl_zlib_vc10_x86_static_lib\lib添加到Additional Library Directories配置项中,建议使用相对于使用项目的相对路径。

libcurl_openssl_zlib_lib_include.h文件内容如下:

/********************************************************************
	Copyright(c) 2019, 布凡软件,All rights reserved.
    创建日期:  2019/1/1 15:38
    说    明:  使用libcurl_openssl_zlib所需要包含的头文件	            
     
    当前版本:  1.0
    作    者:  布凡
    完成日期:   
*********************************************************************/
#ifndef _LIBCURL_OPENSSL_ZLIB_INCLUDE_H_BFSOFT_
#define _LIBCURL_OPENSSL_ZLIB_INCLUDE_H_BFSOFT_
//////////////////////////////////////////////////////////////////////////
/********************************************************************
// 建议以相对路径方式配置下列项
// 配置项目属性Additional Include Directories:
// 由于openssl库头文件不是相对目录关系
// 所以必须把\libcurl_openssl_zlib_vc10_x86_static_lib\include添加到配置项中
// 
// 配置项目属性Additional Library Directories:
// 把\libcurl_openssl_zlib_vc10_x86_static_lib\lib添加到配置项中
// 
*********************************************************************/
// zlib,zlib库必须在包含头文件之前定义该宏
#define ZLIB_WINAPI
#include "include/zlib/zlib.h"
#include "include/zlib/zconf.h"

// openssl,如果需要其他的头文件在此处添加
#include "include/openssl/des.h"
#include "include/openssl/ssl.h"
#include "include/openssl/md5.h"
#include "include/openssl/opensslv.h"

// libcurl,使用libcurl静态库必须在包含头文件之前定义该宏
#define CURL_STATICLIB
#include "include/curl/curl.h"

// libcurl依赖的库
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wldap32.lib")

// openssl依赖的库
#pragma comment(lib, "Crypt32.lib")    
	

//////////////////////////////////////////////////////////////////////////
// 根据编译选项及运行时库导入对应的静态库
// Debug
#ifdef _DEBUG 

	// /MDd
	#ifdef _DLL
		#pragma comment(lib, "zlib_MDd.lib")
		#pragma comment(lib, "libeay32_MDd.lib") 
		#pragma comment(lib, "ssleay32_MDd.lib") 
		#pragma comment(lib, "libcurld_MDd.lib") 
	// /MTd
	#else
        #pragma comment(lib, "zlib_MTd.lib")
        #pragma comment(lib, "libeay32_MTd.lib") 
        #pragma comment(lib, "ssleay32_MTd.lib") 
        #pragma comment(lib, "libcurld_MTd.lib")  
	#endif

// Release
#else 

	// /MD
	#ifdef _DLL
        #pragma comment(lib, "zlib_MD.lib")
        #pragma comment(lib, "libeay32_MD.lib") 
        #pragma comment(lib, "ssleay32_MD.lib") 
        #pragma comment(lib, "libcurl_MD.lib") 
	// /MT
	#else
        #pragma comment(lib, "zlib_MT.lib")
        #pragma comment(lib, "libeay32_MT.lib") 
        #pragma comment(lib, "ssleay32_MT.lib") 
        #pragma comment(lib, "libcurl_MT.lib") 
	#endif

#endif


//////////////////////////////////////////////////////////////////////////
#endif