visual studio 2017 libcurl ssh perl
https://www.cnblogs.com/zzugyl/p/5037152.html
http://www.activestate.com/activeperl/downloads
ActivePerl
-perlpath - Specify the custom perl root path if perl is not located at
“C:\Perl” and it is a portable copy of perl and not
installed on the win system.
For e.g. -perlpath “D:\strawberry-perl-5.24.3.1-64bit-portable”
perl
https://www.perl.org/get.html
ActivePerl 更新了 需要 账号,而且安装的时候,需要 powershell,就不用它了.
有点麻烦
https://strawberryperl.com/
strawberry-perl-5.32.1.1-64bit.msi
strawberry-perl-5.32.1.1-32bit.msi
ActiveState Perl和 Strawberry Perl最大的区别是 Strawberry Perl 里面有多包含一些 CPAN 里的模块, 所以Strawberry Perl 下载的安装文件有 80多M, 而ActiveState Perl 只有20M 左右。
重启电脑后
系统变量 Path 里面 会自动的增加如下内容:
C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin
参考
https://www.cnblogs.com/damizhou/p/11744096.html
https://www.cnblogs.com/damizhou/p/11744096.html
ssl
1、下载或者编译openssl
可以在
http://windows.php.net/downloads/php-sdk/deps/vc15/下载编译好的包。
测试 编译后的libcurl是否支持HTTPS协议 ?
在第7步,编译成功以后,会生成libcurl 还有外壳程序curl .
安装上面的配置,找到curl和libcurl
下面测试 www.baidu.com 和支持加密 https://mail.qq.com
经过测试访问加密HTTPS协议传输,和不用加密的HTTP都能成功。。 所以编译libcurl 就算圆满成功 大功告成!!
1
右键我的电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 找到“Path”编辑,在最后添加你的openssl安装路径,e.g. "…xxx;c:\openssl\bin;"然后保存,重新打开一个命令行窗口处输入openssl version -a就会有信息了
windows安装OpenSSL
说明
openssl是一个强大的安全套接字密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其他目的使用。
openssl整个软件可以分为三个主要的功能部分:密码算法库、SSL协议库以及应用程序。
安装openssl有两种方式,第一种是下载源码,自己编译;第二种是装上安装包即可运行
安装方式二
- 下载和安装
下载其他人做的便捷版安装包
http://slproweb.com/products/Win32OpenSSL.html
一直狂点下一步就行了 - 配置环境变量
配置环境变量,老生常谈,这里简单贴一下配置OPENSSL_HOME
1
cd /D E:\mfc_work\libcurl_work\work\openssl-1.1.1l
perl Configure VC-WIN64A
如果想编译32位版本的
perl Configure VC-WIN32
2
E:\mfc_work\openssl_lib
C:\Program Files\NASM
cd /D E:\mfc_work\libcurl_work\work\openssl-1.1.1l
perl Configure VC-WIN32 --prefix=E:\mfc_work\openssl_lib
perl Configure VC-WIN64A --prefix=E:\mfc_work\openssl_win64_lib
perl Configure VC-WIN32 --prefix=E:\mfc_work\openssl_win32_lib
5)按照 INSTALL 所述,依次输入:
nmake
nmake test
nmake install
怎么清理一下
使用C++发送http请求,非libcurl莫属,加上openssl支持https,加上zlib支持gzip自动解压,完美,记录一下编译过程以及遇到的问题。
cd /D E:\mfc_work\libcurl_work\work\zlib-1.2.11
>> perl Configure VC-WIN64A --prefix=@统一文件夹\openssl_1_1_0l_vc15_x64 --with-zlib-include=@统一文件夹\zlib_zip_1_2_11_vc15_x64\include --with-zlib-lib=@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib\release\zlib_zip1211.lib zlib-dynamic
# VC-WIN64A:64位版本编译
# --prefix:编译结果安装目录
# --with-zlib-include:zlib库包含目录
# --with-zlib-lib:zlib库导入库文件
# zlib-dynamic:zlib以dll形式引入
# 此命令行运行过程中会报 @perl openssl错误图 所示错误,忽略即可
>> nmake
>> nmake test
>> nmake install
>> nmake clean
2. 编译zlib
a. 官网下载最新版本zlib源代码
http://www.zlib.net/ zlib 1.2.8
http://zlib.net/zlib-1.2.8.tar.gz
b. 使用Visual Studio 2010 直接打开 zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln 运行即可。
或者在zlib根目录下 命令行执行
nmake -f win32/Makefile.msc
3
安装 strawberry-perl-5.32.1.1-64bit.msi
默认安装
安装 nasm-2.15.02-installer-x64.exe,编译openssl用的
默认安装
然后 设置系统变量 PATH ,添加 C:\Program Files\NASM
然后 下载
openssl-1.1.1l.tar.gz
解压后 重命名为 openssl 目录
openssl 目录 和curl-7.80.0 目录在 一个目录下面,同一个层级。
然后 在 visual studio 2017的 x64 控制台命令行 ,里面
跳转到
E:\mfc_work\libcurl_work\work\curl-7.80.0\projects 目录下面
执行
执行curl/projects/build-openssl.bat的批处理脚本
Usage: build-openssl [configuration] [directory]
build-openssl vc14 x64 release …/…/openssl
build-openssl.bat xxx xxx xxx
visual studio 2017 对应的是 v14.1
最后会在
openssl\build\目录下面生成 32位和64位的对应的库
将
openssl\build\Win32\VC14.1
复制一份修改名字为
openssl\build\Win32\VC15
然后进入
E:\mfc_work\libcurl_work\work\curl-7.80.0\projects\Windows\VC15
用visual studio2017
打开curl-all.sln
就会编译出
curl-7.80.0\build\Win32\VC15 对应的 curl.exe和libcurl.lib
使用C++发送http请求,非libcurl莫属,加上openssl支持https,加上zlib支持gzip自动解压,完美,记录一下编译过程以及遇到的问题。
如果想 用其他版本的 比如visual studio2013 开发 libcurl。
需要用对应的版本的 visual studio 2013 重新编译一下 openssl ,
然后再用visual studio2013 编译 libcurl
下面的这个错误是因为 openssl没有重新编译,而不是因为 工程 相对路径没有设置对。
1>E:\mfc_work\libcurl_work\work\openssl\include\openssl/e_os2.h(13): fatal error C1083: 无法打开包括文件: “openssl/opensslconf.h”: No such file or directory
1
这个解决方案中包含6个工程。其中:
(1). zlibvc生成动态链接库zlibwapi.dll和对应的导入库zlibwapi.lib
(2). zlibstat生成静态链接库zlibstat.lib
(3). testzlibdll测试生成的动态链接库zlibwapi.dll
(4). testzlib测试生成的静态链接库zlibstat.lib
二、使用zlib静态库:zlibstat.lib
-
包含头文件
属性–C/C+±-常规–附加包含目录(添加包含.h文件的目录)
-
定义宏
属性–C/C+±-预处理器–预处理器定义:添加 ZLIB_WINAPI ASMV ASMINF
-
项目包含.lib文件所在的目录:
属性–链接器–常规–附加库目录
-
项目包含.lib文件
属性–链接器–输入–附加依赖项(libstat.lib)
-
项目代码中 #include “zlib.h”
编译生成.exe即可使用。
三、使用动态库 zlibwapi.lib
-
包含头文件
属性–C/C+±-常规–附加包含目录(添加包含.h的目录)
-
定义宏
属性–C/C+±-预处理器–预处理器定义:添加 ZLIB_WINAPI
-
项目包含.lib文件所在的目录:
属性–链接器–常规–附加库目录
-
项目包含.lib文件
属性–链接器–输入–附加依赖项(zlibwapi.lib)
-
项目代码中 #include “zlib.h”
编译生成.exe文件需要.dll文件支持(动态加载)
1
#include <iostream>
#include <curl/curl.h>
int AAmain() {
CURL *curl = nullptr;
CURLcode res;
curl = curl_easy_init();
if (curl != nullptr) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
int main()
{
AAmain();
std::cout << "Hello World!\n";
}
1
_MSC_VER 定义编译器的版本
下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接)
MS VC++ 15.0 _MSC_VER = 1910 (Visual Studio 2017)
MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015)
MS VC++ 12.0 _MSC_VER = 1800 (VisualStudio 2013)
MS VC++ 11.0 _MSC_VER = 1700 (VisualStudio 2012)
MS VC++ 10.0 _MSC_VER = 1600(VisualStudio 2010)
MS VC++ 9.0 _MSC_VER = 1500(VisualStudio 2008)
MS VC++ 8.0 _MSC_VER = 1400(VisualStudio 2005)
MS VC++ 7.1 _MSC_VER = 1310(VisualStudio 2003)
MS VC++ 7.0 _MSC_VER = 1300(VisualStudio .NET)
MS VC++ 6.0 _MSC_VER = 1200(VisualStudio 98)
MS VC++ 5.0 _MSC_VER = 1100(VisualStudio 97)