需要开发一个https的服务,使用libhv来做,需要重新编译libhv,需要开启 WITH_OPENSSL,前面编译一直很顺利,但是打开VS生成动态库的时候,报错,找不到ssl相关的文件,看了官方的文档,说需要自己配置ssl。然后研究怎么编译OPENSSL,和编译支持HTTPS的libhv花了一点时间,所以想着把这个问题记录下来。

相关链接:

网络库libhv,gitee:https://gitee.com/libhv/libhv

openssl官网:https://www.openssl.org/

openssl下载地址(别人编译好的):https://slproweb.com/products/Win32OpenSSL.html

编译的测试Demo,包含编译好的X86版本的动态库:https://wwk.lanzoul.com/iuaec1ukiani

一、下载OPENSSL

openssl官网现在不提供编译好的动态库了,只提供源码,需要自己编译。如果从openssl官网下载源码自己编译,会很麻烦,还需要安装 perl 和 nasm。

所以我用的别人编译好的,网址:https://slproweb.com/products/Win32OpenSSL.html

如果你是32位,就下载32位的,如果你是64位,就下载64位的,下载这个大的就可以了。

下载完成后,按照提示一步一步点击鼠标就可以了,需要注意的是:选择二进制文件安装,这个才是我们需要的。

二、把OPENSSL相关文件放到libhv文件夹

1. 在libhv的根目录,创建文件夹  3rd

2. 把 OPENSSL 的 include 文件夹和 lib 文件夹 放到 3rd 文件夹

3. 需要注意的是需要修改 openssl lib 文件的名称,把【libcrypto.lib,libssl.lib】 -》 改为【crypto.lib,ssl.lib】

三、编译libhv

剩下的就很简单了,按照官方的文档:https://hewei.blog.csdn.net/article/details/113704737, 进行编译就可以了

打开 cmake,勾选上  WITH_OPENSSL,然后一步一步的走下去,然后就编译成功了。

四、测试libhv,HTTPS

新建一个项目,然后写了一个简单的Demo(HTTPS服务和HTML),没问题,运行很好。

测试Demo下载地址(包含编译好的动态库X86):https://wwk.lanzoul.com/iuaec1ukiani

Windows系统编译libhv带SSL,开启WITH_OPENSSL的更多相关文章

  1. ECS Windows系统使用自带监视器查看IIS并发连接数

    问题现象 ECS Windows系统如何查看IIS并发连接数? 解决方案 1.运行-->输入“perfmon.msc” . 2.在“系统监视器”图表区域里点击右键,然后点“添加计数器”. 3.在 ...

  2. 编译安装带ssl 模块指定版本Python

      出现这个或者fatal error: openssl/名单.h: No such file or directory.都是没有安装libssl-dev- libssl-dev包含libraries ...

  3. 用java写的一个程序,可以调用windows系统中自带的各种工具,例如截图,便签等

    由于图片资源没有上传,所以运行后不会有图片,感兴趣的同学可以@我,我打包上传, package SmallPrograme; import java.awt.*; import java.awt.ev ...

  4. 将Windows系统编译的.NET Core程序发布到Ubuntu系统

    在可移植方面.NET Core应用程序分为两种,Portable application(便捷,需要目标机器安装.NET Core Runtime)和Self-contained applicatio ...

  5. 利用Python进行windows系统上的图像识别与点击(Mac OS系统也可以)

    系统环境: 1.安装了python 2.安装了pyautogui模块 windows系统:无需安装依赖模块,在cmd中直接输入pip install pyautogui即可完成安装 Mac OS系统: ...

  6. 如何在Windows系统上基于Sublime搭建Python的编译环境

    刚刚接触到Python,直接在计算机上编译时不能正确的运行,所以将一些有关编译环境调试的知识总结了一下. 环境搭建: Python在 windows系统上编译的时候可能会出现一些编译无法运行的情况,我 ...

  7. 以太网客户端提示windows系统自带共享代理解决方法

    以太网客户端(Dr.COM)登陆出现windows系统自带共享代理,如下图: 系统win+R调出运行: 在服务中,找到Internet Connection Sharing (ICS): 右键属性,将 ...

  8. 如何在windows系统自带命令查看硬件信息?

    如何在windows系统自带命令查看硬件信息? 对于在windows下查看系统信息大家一定不陌生了,我现在说几个最常用的方法,对命令感兴趣的朋友看看,(给菜鸟看的,老手就不要笑话我了,大家都是从那个时 ...

  9. 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl

    利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...

  10. Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

    由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...

随机推荐

  1. 【Azure App Service】误删除App Service资源,怎么办?

    问题描述 操作不当,误删除了App Service的资源,怎么办? 问题解答 根据Azure 官方文档,可以使用 Powershell 命令恢复到原始 App Service 应用名称. 操作步骤 第 ...

  2. 【Azure API 管理】APIM中证书更新问题

    问题描述 每一年到期更新域名证书,APIM会中断服务,请问如何不中断服务? 问题解答 Azure API 管理允许在受信任的根证书和中间证书存储中的计算机上安装 CA 证书,分配证书的过程可能需要 1 ...

  3. [C++] 进程注入dll版

    目录 前言 前提 原理 代码 一些问题 前言 这几天在弄进程注入的事情,一直做不出来直接的进程注入,也就是不要dll的注入.因为dll注入据说容易触发杀软,但是弄了两天没弄出来.代码明明不报错,目标进 ...

  4. 多线程系列(十九) -Future使用详解

    一.摘要 在前几篇线程系列文章中,我们介绍了线程池的相关技术,任务执行类只需要实现Runnable接口,然后交给线程池,就可以轻松的实现异步执行多个任务的目标,提升程序的执行效率,比如如下异步执行任务 ...

  5. FFmpeg命令行之ffmpeg调整音视频播放速度

    FFmpeg对音频.视频播放速度的调整的原理不一样.下面简单的说一下各自的原理及实现方式: 一.调整视频速率 视频的倍速主要是通过控制filter中的setpts来实现,setpts是视频滤波器通过改 ...

  6. 寒武纪加速平台(MLU200系列) 摸鱼指南(三)--- 模型移植-分割网络实例

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  7. FTP的安装和使用

    实验环境: windows server虚拟机一台 网络适配器:vmnet1 ip:192.168.1.220 一.安装FTP服务 打开服务器管理器 点击添加角色,勾IIS,点击下一步直到对话框消失 ...

  8. Garnet: 力压Redis的C#高性能分布式存储数据库

    今天看到微软研究院开源了一个新的C#项目,叫Garnet,它实现了Redis协议,可以直接将Redis替换为Garnet,客户端不需要任何修改.根据其官网的信息,简单的介绍一下它. 开源仓库地址:ht ...

  9. 浅析三维模型OBJ格式轻量化压缩文件大小的技术方法

    浅析三维模型OBJ格式轻量化压缩文件大小的技术方法 在减小三维模型OBJ格式轻量化文件大小方面,有许多技术和方法可以使用.下面我将介绍一些常用的方法来减小OBJ文件的大小. 1.优化顶点数量:减少OB ...

  10. 记录一次WPF命令参数报错,InvalidCastException: T for DelegateCommand<T> is not an object nor Nullable.

    在使用WPF的时候对int或者bool类型进行绑定出现InvalidCastException: T for DelegateCommand is not an object nor Nullable ...