前提条件libcurl开发库需要zlib和openssl的支持。
本文记录完整编译方案。
环境准备
zlib:zlib-1.2.11 http://www.zlib.net/
步骤
1)导入zlibvc.vcxproj (目标所在目录: xxx\zlib-1.2.11\contrib\vstudio\vc15)
2)更改zlibvc部分属性:
配置管理器为:x64
【常规】->【目标文件名】内容改为zlib_zip1211;
【C/C++】->【预处理器定义】更改ZLIB_WINAPI–>ZLIB_DLL (为了编译出的dll可以使用zip相关接口)
【链接器】->【常规】->【输出文件】内容改为$(OutDir)$(TargetName).dll
【链接器】->【高级】->【导入库】内容改为$(OutDir)$(TargetName).lib
【链接器】->【调试】->【生成程序库文件】内容改为$(OutDir)$(TargetName).pdb
【链接器】->【调试】->【映射文件名】内容改为$(OutDir)$(TargetName).map
install
本文环境统一将依赖库组织到 @统一文件夹 下
zlib安装目录:@统一文件夹\zlib_zip_1_2_11_x64
安装文件夹组织如下:
lib和bin文件夹组织如下:
include包含内容如下:
>> 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形式引入
# zlib:支持zlib压缩
# no-shared:编译静态库 不编译dll
# --debug:编译debug版本
# --release:编译release版本
# 此命令行运行过程中会报 @perl openssl错误图 所示错误,忽略即可
>> nmake
>> nmake test
>> nmake install
>> nmake clean
perl openssl错误图如下所示
3. install
命令行执行完毕后,内容组织如下:
openssl安装目录:@统一文件夹\openssl_1_1_0l_vc15_x64
安装文件夹组织如下:
lib内容如下:
bin内容如下:
>> perl Configure VC-WIN64A --prefix=@统一文件夹\openssl_1_0_2t_vc15_x64 --with-zlib-include=@统一文件夹\zlib_zip_1_2_11_vc15_x64\include --with-zlib-lib=@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib\zlib_zip1211.lib zlib-dynamic
# VC-WIN64A:64位版本编译
# --prefix:编译结果安装目录
# --with-zlib-include:zlib库包含目录
# --with-zlib-lib:zlib库导入库文件
# zlib-dynamic:zlib以dll形式引入
>> ms\do_win64a
>> nmake -f ms\ntdll.mak
# 这两步命令结束编译基本完成
>> cd out32dll
>> ..\ms\test
# 这两步命令测试编译结果
# 编译成功,会提示"passed all tests"
>> nmake -f ms\ntdll.mak install
# 安装到指定目录
环境准备
libssh2:libssh2-1.9.0 https://www.libssh2.org/
zlib:zlib-1.2.11 (上述zlib编译结果)
openssl:openssl_1_1_0l (上述openssl编译结果)
步骤
1)vs2017项目准备
libssh2-1.9.0解压根目录\win32\libssh2.dsw项目导入。项目有如图所示的配置
本文环境只编译OpenSSL DLL Debug | x64 和 OpenSSL DLL Release | x64。
配置【Windows SDK 版本】和【平台工具集】。
【常规】->【目标文件名】内容改为libssh2190;
【C/C++】->【常规】更新openssl include 和 zlib include
(这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\include】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\include】)
【链接器】->【常规】->【附加库目录】更新openssl lib 和 zlib lib
(这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\lib】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib】)
【链接器】->【输入】更新导入库名字
libcrypto.lib libssl.lib zlib_zip1211.lib (上述编译的结果)
install
配置完成后,启动vs2017编译即可。
libssh2安装目录:@统一文件夹\libssh2_1_9_0_vc15_x64
安装文件夹组织如下:
include内容如下:
lib内容如下:
环境准备
curl:curl-7.66.0 https://curl.haxx.se/download.html
zlib:zlib-1.2.11 (上述zlib编译结果)
openssl:openssl_1_1_0l (上述openssl编译结果)
libssh2:libssh2-1.9.0 (上述openssl编译结果)
步骤
1)vs2017项目准备
curl-7.66.0解压根目录\projects\Windows\VC15\curl-all.sln项目导入。项目有如图所示的配置
本文环境只编译DLL Debug - DLL OpenSSL - DLL LibSSH2 | x64 和 DLL Release - DLL OpenSSL - DLL LibSSH2 | x64。
配置【Windows SDK 版本】和【平台工具集】。
【常规】->【目标文件名】内容改为libcurl7660;
【C/C++】->【常规】更新openssl include 和 zlib include 以及 libssh2 include
(这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\include】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\include】和【@统一文件夹\libssh2_1_9_0_vc15_x64\include】)
【C/C++】->【预处理器】添加HAVE_ZLIB_H (zlib的支持)
【链接器】->【常规】->【附加库目录】更新openssl lib 和 zlib lib 以及 libssh2 lib
(这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\lib】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib】和【@统一文件夹\libssh2_1_9_0_vc15_x64\lib】)
【链接器】->【输入】更新导入库名字
libcrypto.lib libssl.lib zlib_zip1211.lib libssh2190.lib (上述编译的结果)
这里存在问题,上述导入的项目默认情况下,Curl_ssh_init Curl_ssh_cleanup Curl_ssh_version函数没有定义,需要为项目引入定义这些函数的cpp。路径为:@curl解压根目录\lib\vssh\libssh2.c
install
配置完成后,启动vs2017编译即可。
curl安装目录:@统一文件夹\curl_7_66_0_vc15_x64
安装文件夹组织如下:
include内容如下:
lib内容如下:
按照上述配置环境和编译过程,编译顺利完成!
上述编译中,使用openssl1.1.0l编译的libssh2,在使用过程中_libssh2_openssl_crypto_exit函数会崩溃。换成openssl1.0.2t后解决。
【问题描述】:文件删除时,无法读取源文件或磁盘【原因分析】:1. 某些文件夹或者目录导致无法删除2. 磁盘错误【简易步骤】:【我的电脑】—【属性】—【工具】—【开始检查】—然后勾选【自动修复文件系统错误】和【扫描并试图恢复坏扇区】—【开始】—【360安全卫士】—【功能大全】—【文件粉碎机】【解决方案:】:方案一:Ctrl+alt+del注销或重启电脑,再次删除;方案二:在安全模式下删除1. 进入【...
前言今天上午和大家进行了一次有意义的尝试,对机房的电脑实操了一遍拆装机的步骤,了解构造有助于更好的操作和使用计算机。拆装机方案时间:2019年11月10日地点:师范学院数理楼501机房准备工具:螺丝刀、镊子、尖嘴钳、万用表、吹气球、刷子、防静电手套、硅胶等。1.拆卸台式计算机主机流程如下:步骤1:先关闭电脑并切断所有电源,拔去所有与主机的连接线,以确保安全。步骤2:卸下主机箱固定...
利用vue-admin-template进行二次开发,只记录了路由权限的设置第一次使用该框架做细分化的权限分配,有些地方有问题还望大佬指导下,后端返回给我的是数组,需要里面对象的"permissionName"的值,路由这边是由前端写上根据后端返回的来的name值进行做判断渲染后端返回我的数据结构1.在api/user.js 修改权限对应后端接口的url,便可正常访问到后端接口数据2.基础路由router/index.js中constantRoutes里面通用部分,asyncRoutes里面权限
1、用SSMS工具打开SSAS2、打开属性3、属性Log\QueryLog\CreateQueryLogTable:该属性是否由表生成Log\QueryLog\QueryLogConnectionString:如果上个属性设置为True,则该属性就是配置日志表生成的库Log\QueryLog\QueryLogSamling:用户访问多少次才会记录到表中一条记录Log\Que
本文内容:章节自动编号 图片自动编号(带上章节号) 公式自动编号(MathType)章节自动编号实现效果:对文本添加标题样式后,自动编号,根据样式情况自动修改编号实现方式:多级列表+各级标题样式(用默认的就可以)步骤:上方菜单栏--开始--列表,选择定义新的多级列表 左上角选择要修改的级别,1级可以认为对应标题1,这里讲下主要改的几个地方,见下图 左上角切换要修改的列表级别, 右上角是选择链接到哪个样式,即对哪个样式自动编号 左中是输入编号格式,.
一、问题描述远程调试HBase,创建配置文件,建立管理员Admin,但是创建时报错:org.apache.hadoop.hbase.MasterNotRunningException在代码运行后报错,我运行之后报错:Warning:(22, 28) java: org.apache.hadoop.hbase.client.HBaseAdmin中的HBaseAdmin(org...
随机存取存储器(Random Access Memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存...
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。
近日服务器安装CentOS8操作系统,想在这台机器安装KVM虚拟机。需要配置网桥,以方便虚拟机能够局域网中的其他机器处于同一网段相通。Bridge(网桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实的交换机功能相似。网桥设备实例可以和 Linux 上其他网络设备实例连接。当有数据到达时,网桥会根据报文中的 MAC 信息进行广播、转发、丢弃处理。此前有写一篇文章讲述Ce...
<br />程序员面试题精选(14)-圆圈中最后剩下的数字 <br />题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。<br />分析:既然题目有一个数字圆圈,很自然的想法是我们用一个数据结构来模拟这个圆圈。在常用的数据结构中,我们很容易想到用环形列表。我们可以创建一个总共有m个数字的环形列表,然后每次从这个列表
一:系统调用和库函数调用的区别:1:系统调用是最底层的应用,是面向硬件的。而库函数的调用是面向开发的,相当于应用程序的API(即预先定义好的函数)接口;2:各个操作系统的系统调用是不同的,因此系统调用一般是没有跨操作系统的可移植性,而库函数的移植性良好(c库在Windows和Linux环境下都可以操作);3:库函数属于过程调用,调用开销小;系统调用需要在用户空间和内核上下文环境切换,开...
Mybaits中的xml解析是如何进行的