需求:在vs2013上配置支持https协议的libcurl。

环境:win7(64位),vs2013

一、安装openssl:

需要先安装nasm和ActivePerl。

nasm需要手动配置环境变量。ActivePerl下载下来一路next安装就好了。

我安装openssl的时候是2018-08-03。不保证以后下面这个链接的方法依然有用。

我参考的是这个:https://blog.csdn.net/hpp24/article/details/54406424

亲测有用。只不过生成的include lib 等目录不对。居然在这目录C:\usr\local\ssl

需要注意的是,由于我的系统是64位的。我的vcvars32.bat在C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin这个目录中。

使用时需要指定头文件路径:

C:\usr\local\ssl\include

库的路径:

C:\usr\local\ssl\lib

同时要把libeay32.dllssleay32.dll拷贝到lib目录下。

使用时要把上面两个dll跟可执行文件放在一起。

#pragma comment(lib, "ssleay32.lib")

#pragma comment(lib, "libeay32.lib")

二、编译libcurl

直接去下载最新的。https://curl.haxx.se/download.html

我下载的是这个curl-7.61.0

解压,之后进入\curl-7.61.0\projects\Windows\VC12,打开curl-all.sln。里面有两个工程,

选择libcurl。配置选下面这个:

配置属性-》VC++目录-》包含目录  要指定openssl的头文件路径。

配置属性-》VC++目录-》库目录 要指定openssl的库目录。

然后直接编译就好了。

curl-7.61.0\build\Win32\VC12\DLL Release - DLL OpenSSL

这个目录下会生成 libcurl.lib  libcurl.dll。这就大功告成了。

使用时的头文件路径是\curl-7.61.0\include。

三、测试

可以参考这个:https://curl.haxx.se/libcurl/c/https.html

下面上我的代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<curl/curl.h>
#include<iostream> using namespace std; #pragma comment(lib, "libcurl.lib")
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib") void test2()
{
curl_global_init(CURL_GLOBAL_DEFAULT); CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl)
{
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */
curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com"); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);//忽略证书检查
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); /* Now specify the POST data */
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl"); /* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
if (res)
{
cout << "curl_easy_perform failed res = " << res << " ErrInfo:" << curl_easy_strerror(res) << endl;
}
else
{
cout << "curl_easy_perform success " << endl;
} /* always cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
} int main()
{
test2();
getchar();
return ;
}

要配置curl的头文件路径和库路径,和openssl的库路径。

直接运行就好了。

四、总结

1)编译openssl比较费时间,这一步一定要做,不要想偷懒,按步骤一步一步来就好了。

2)运行curl测试程序时需要链接libcurl和openssl的那两个库。特别注意要把库放到程序运行目录中去。我最开始怀疑自己是不是没编译到包含openssl的libcurl。一直在库目录上折腾,没有放到运行目录中去,折腾了将近一天。

3)查看自己编译的libcurl是否支持https,可以编译curl-all.sln中的curl项目,配置一样,要选openssl的。然后会编译出一个curl.exe。然后打开系统自带的cmd.exe,切换到生成curl.exe的目录,把两个openssl的库拷贝进来。执行红色框两个命令。出现下面的结果就表示你成功了。

vs2013 配置支持https的libcurl的更多相关文章

  1. windows Apache 环境下配置支持HTTPS的SSL证书

    windows Apache 环境下配置支持HTTPS的SSL证书 1.准备工作 1)在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有SSL版本的A ...

  2. Nginx配置支持https协议-应用实践

    Nginx配置支持https协议-应用实践 https简介 HTTPS 是运行在 TLS/SSL 之上的 HTTP,与普通的 HTTP 相比,在数据传输的安全性上有很大的提升. TLS是传输层安全协议 ...

  3. windows下编译支持https的libcurl

    本文参考http://blog.csdn.net/fragmentalice/article/details/39430293特此感谢.公司项目中用到几个http get请求,用的libcurl开源库 ...

  4. Nginx从搭建到配置支持HTTPS

    原文地址:https://www.xingkongbj.com/blog/nginx/nginx.html 安装 基础包 ububtu apt-get install build-essential ...

  5. nginx使用ssl模块配置支持HTTPS访问

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求: 做一个网站域名为 www.localhost.cn 要求通过htt ...

  6. Haproxy配置支持https获取用户IP地址

    global log 127.0.0.1 local0 chroot /var/lib/haproxy #chroot运行路径 pidfile /var/run/haproxy.pid #haprox ...

  7. nginx使用ssl模块配置支持HTTPS访问【解决ssl错误】

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求:做一个网站域名为 www.localhost.cn 要求通过http ...

  8. windows Apache 配置支持HTTPS的SSL证书

    在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有ssl版本的Apache安装程序. 并且ssl需要的文件在如下的位置: [Apache安装目录]/m ...

  9. nginx使用ssl模块配置支持HTTPS访问,腾讯云申请免费证书

    开始我尝试用 let's encrypt 让http 变 https 官方:https://github.com/certbot/certbot 参考:https://www.cnblogs.com/ ...

随机推荐

  1. 【转】从此以后谁也别说我不懂LDO了!

    LDO是个很简单的器件,但是我跟客户沟通的过程中,发现客户工程师的技术水平参差不齐,有的工程师只是follow 别人以前的设计,任何原理和设计方法都不懂,希望大家看完这篇文章都能成为LDO 专家. 第 ...

  2. [2017-7-25]Android Learning Day3

    最近真的有点迷茫,感觉没有一个完整的教学体系很难进行下去,有的都是自己瞎捉摸,就跟以前ACM的时候一样,动不动就“这就是一道,水题暴力就行了”.“我们枚举一下所有的状态,找一下规律就行了”,mmp哟. ...

  3. python列表转字符串

    temp = "".join(sorted(arr[i])) arr[i] = temp

  4. base64加密图片处理

    场景:下载html中内嵌的base64加密图片 举个例子,博客园的插入图片有两种方式,一是引用图片链接,二是直接粘贴2进制图片文件.以第二种方式的图片则是以base64加密的方式内嵌在html页面中. ...

  5. javascript之复习(css属性值的计算)

    js取div的宽高咋办,css有content-box,border-box,padding-box,表现又不一样.好在有个offsetWidth, <style type="text ...

  6. Educational Codeforces Round 46 C - Covered Points Count

    C - Covered Points Count emmm 好像是先离散化一下 注意 R需要+1 这样可以确定端点 emmm 扫描线?瞎搞一下? #include<bits/stdc++.h&g ...

  7. bzoj2252 矩阵距离

    很好奇这种 普及- 的题为什么会是权限题...... 我一开始想用枚举 + 搜索,看书后发现自己脑抽了.直接BFS即可. #include <cstdio> #include <qu ...

  8. anaconda的安装教程和使用方法

    一.anaconda安装方法: 1.下载: anaconda官方下载地址:https://www.anaconda.com/download/ 2.安装: 可以自己指定路劲,也可以选择默认安装,最后记 ...

  9. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

    误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...

  10. increment/decrement/dereference操作符

    标题以上分别对于++/--/* #include <iostream> #include <cstddef> using namespace std; class INT { ...