网上有一堆方式,各自有坑,自己亲测记录在下。就一个https,至于吗……
------
1: 从 https://www.openssl.org/source/ 下载OpenSSL
建议使用Long term supports(LTS)版本,这个版本会长期有人维护支持。而stable版本即使出现BUG,也仅会在下一版本进行修复。
我使用的是 openssl-1.0.2l(LTS)版本。
2:编译OpenSSL需要依赖ActivePerl,从 http://downloads.activestate.com/ActivePerl/releases/ 这里下载
我使用的是5.26.0.2600
3:编译OpenSSL需要依赖Nasm,从 http://www.nasm.us 这里下载,安装后需要将 nasm.exe 加入环境变量
4:使用VS的 X86 本机工具命令提示工具
5:cd 到openssl-1.0.2l文件夹中
6:命令行输入 perl Configure VC-WIN32 no-asm
7: 命令行输入 ms\do_ms.bat
8: 命令行输入 nmake -f ms/nt.mak (静态库,若动态库可使用 ms/ntdll.mak)
9: 等待成吨的编译,若中间出错,请务必删除整个openssl-1.0.2l文件夹再做调整编译,否则会出现难以理解的错误提示。
10: 编译完毕,命令行输入 nmake -f ms/nt.mak test
11: 若成功,则会在命令窗口最后输出 passed all tests
12: 从 https://curl.haxx.se/download.html 下载LibCurl,我使用的是curl-7.55.1
13: 将 openssl-1.0.2l -> inc32 -> openssl 所有的.h 和 openssl-1.0.2l -> out32 的 libeay32.lib ssleay32.lib 一起复制到 curl-7.55.1 -> lib -> openssl 中
14: 打开LibCurl的Projects目录下的windows目录,找到对应的VS版本文件夹,打开里面的curl-all.sln
15: 将Libcurl设置为启动项目,并修改编译选项为 lib release - lib openssl
16: 注意设置该项目的预处理器为 BUILDING_LIBCURL CURL_STATICLIB USE_OPENSSL,三个一个都不要少。
17:编译完毕后可以进行test测试是否编译正常了
18:创建一个新控制台工程,TestLibcurl,将curl的头文件8个,以及编译出来的libcurl.lib 还有openssl的两个lib(libeay32.lib ssleay32.lib)拷贝到TestLibcurl工程内
19:设置TestLibcurl的预处理器添加 CURL_STATICLIB USE_OPENSSL 这两个预定义,设置好附加头目录,库目录和依赖项
20:测试代码如下:
#include "stdafx.h"
#include "../include/curl/curl.h"
#pragma comment(lib,"../lib/debug/libcurld.lib")
int main()
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, true);
curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
{
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
system("pause");
return 0;
}
21:如果控制台输出了baidu的网页源码那就说明成功了,因为如果没有openssl的正确编译链接,是无法访问https的。
评论