openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上)

文章目录

    • openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上)
    • 概述
    • 笔记
    • 备注
    • END

openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上)

概述

将openssl3.2编译出来了(openssl3.2 - 编译)
安装后的openssl.exe可以干openssl3.2所有的事情, 用openssl.exe 加上各种参数来完成具体的功能.
如果想迁移openssl.exe的功能到自己工程, 就要知道openssl.exe命令行的实现, 如果能用VS单步调试, 那就太舒服了.
这时, 如果编译一个openssl.exe的VS工程, 那最适合不过了.

在网上找了一下, 没人这么搞…
都是拿openssl.exe直接干活去了? 还是直接看官方的demo工程将需要的功能摘出来?

明显看官方的openssl.exe工程来的直接啊.

我这里用VS2019, 建立一个控制台工程, 将openssl.exe的源码进行重建.
里面有个小坑, windows.h和winsock2.h同时包含有冲突, 通过实验, 琢磨了半天才发现是这个小问题(以前遇到过这个问题).

笔记

建立一个VS2019控制台工程, 工程名称为my_openssl_cmd. 将模板工程生成的.cpp删掉, 成为一个空工程.
解决方案选择DebugX64
工程根目录下建立一个文件夹 openssl_3d2_x64, 将编译好的openssl-3.2.0源码目录中的apps目录, include目录拷贝进入.
删掉不用的东西如下:
删掉 openssl_3d2_x64\apps\demoSRP 子目录
删掉 openssl_3d2_x64\include\openssl 子目录
只保留openssl_3d2_x64 目录中*.c, *.h, *.rc, 其他都删掉.
在这里插入图片描述

在工程过滤器中, 建立相应的过滤器目录名称, 和openssl_3d2_x64目录中的子文件夹对应.
在这里插入图片描述

在VS2019工程中, 将文件都加入对应的过滤器.
添加工程的头文件路径

.;C:\openssl_3d2\include\;.\openssl_3d2_x64\apps;.\openssl_3d2_x64\apps\include;.\openssl_3d2_x64\include\;

设置工程库路径

C:\openssl_3d2\lib

工程预处理器 加入 _CRT_SECURE_NO_WARNINGS

在工程中查找 include <winsock2.h>, 在这行下面包含windows.h
在工程中查找 #include <windows.h>, 在这行上面包含winsock2.h
统一的包含winsock2.h, windows.h如下

		#include <winsock2.h>#include <windows.h>

在openssl.c的头文件包含后面, 加入库包含

#pragma comment(lib, "libcrypto.lib")
#pragma comment(lib, "libssl.lib")#include <openssl/applink.c> /*! for OPENSSL_Uplink(00007FF8B7EF0FE8,08): no OPENSSL_Applink */#pragma comment(lib, "ws2_32.lib")

在VS2019中, 将apps\lib\engine.c改名为engine_lib.c
在这里插入图片描述
在工程选项中禁用特定警告 : 4267;4090;4244;

上面做的这些编译改动, 都是编译 报错或有编译警告, 才加上的.
发现编译错误或者警告, 就加编译选项或者去稍微改一下代码中关于编译的部分.

最后全部编译一次. 编译完成, 0错误, 0警告.
在这里插入图片描述
将安装好的openssl的2个DLL, 放到编译出的my_openssl_cmd.exe的同级目录, 试试是否能正常运行?
在这里插入图片描述
可以正常运行.

备注

这下就爽飞了, 如果openssl能带参数干啥活(正好咱工程中也需要 😛 ), 直接用VS2019带着工程(带同样的命令行参数)跑起来, 单步调试, 就知道具体实现了.
然后就是整理一下openSSL.exe的实现到自己工程中. 作为研发, 移植(抄代码)这事, 大家都熟 😛

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336803.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在VSCode中安装使用Copilot

在VSCode里找到扩展 安装好后登录github&#xff0c;授权 在VSCode里初步尝试 创建一个js文件 写一个函数名 在括号里回车&#xff0c;会出现可能的代码 如果觉得可以&#xff0c;按一下tab后&#xff0c;代码变亮

探索 OceanBase 中图数据的实现

在数据管理和处理的现代环境中&#xff0c;对能够处理复杂数据结构的复杂数据模型和方法的需求从未如此迫切。图数据的出现以其自然直观地表示复杂关系的独特能力&#xff0c;开辟了数据分析的新领域。 虽然 Neo4j 等成熟的图形数据库为处理图形数据提供了强大的解决方案&…

BabylonJS 6.0文档 Deep Dive 摄像机(三):自定义摄像机输入

1. 如何自定义摄像机输入 当你调用摄像机的attachControl方法之后&#xff0c;摄像机都会自动为您处理输入。可以使detachControl方法撤消该控件。大多数Babylon.js专家使用两步流程来激活和连接相机&#xff1a; //First, set the scenes activeCamera... to be YOUR camera…

python_数据可视化_pandas_导入excel数据

目录 1.1导入库 1.2读取excel文件 1.3读取excel&#xff0c;指定sheet2工作表 1.4指定行索引 1.5指定列索引 1.6指定导入列 案例速览&#xff1a; 1.1导入库 import pandas as pd 1.2读取excel文件 pd.read_excel(文件路径) data pd.read_excel(D:/desktop/TestExcel…

【竞技宝jjb.lol】LOL:ale分析新版本 战士只剩锐雯能玩

北京时间2024年1月10日,随着新年的来临,英雄联盟赛事也开启了全新的篇章,如今距离春季赛开启的时间已经越来越近了。为了让选手结束休赛期后恢复到正常的竞技水平,LPL在前不久刚刚进行了德玛西亚杯的比赛,最终BLG决赛横扫宿敌JDG拿下冠军。而新赛季官方也会推出新版本,那么职业…

Java--业务场景:获取请求的ip属地信息

文章目录 前言步骤在pom文件中引入下列依赖IpUtil工具类在Controller层编写接口&#xff0c;获取请求的IP属地测试接口 IpInfo类中的方法 前言 很多时候&#xff0c;项目里需要展示用户的IP属地信息&#xff0c;所以这篇文章就记录一下如何在Java Spring boot项目里获取请求的…

领英Linkedin自动跳转中国站点的解决方案

linkedin放弃中国市场后&#xff0c;在国内打开linkedin.com&#xff0c;会自动跳转到 linkedin.cn&#xff0c;无法与国际友人在同一个平台上联系。 按照搜到的方法尝试解决&#xff0c;包括修改浏览器默认语言、清除浏览数据、使用软路由上的插件给 linkedin.com设置从国外线…

手机直连卫星及NTN简介

一、手机直连卫星的发展现状 近日&#xff0c;华为推出了支持北斗卫星短报文的Mate 50旗舰机、P60系列&#xff0c;苹果也跟Globalstar&#xff08;全球星&#xff09;合作推出了支持卫星求救的iPhone14&#xff0c;最亮眼的还是华为的。这几款产品揭开了卫星通信探索消费领域…

el-table实现多行合并的效果,并可编辑单元格

背景 数据为数组包对象&#xff0c;对象里面有属性值是数组&#xff1b;无需处理数据&#xff0c;直接使用el-table包el-table的方法&#xff0c;通过修改el-table的样式直接实现多行合并的效果 html代码 <template><div><el-table size"mini" :d…

基于机器视觉的车牌检测-字符识别

一般步骤 字符识别常用的有以下四类&#xff1a; 第一类&#xff1a;结构识别方法。 第二类&#xff1a;统计识别方法。 第三类&#xff1a;BP神经网络方法。 第四类&#xff1a;模板匹配方法。 模板匹配方法是最常用的方法。 主要内容 模板匹配的车牌识别包括以下几点主…

数据库02-07 存储

计算机存储系统&#xff1a; 02.磁道存储

1.4.1机器学习——梯度下降+α学习率大小判定

1.4.1梯度下降 4.1、梯度下降的概念 ※【总结一句话】&#xff1a;系统通过自动的调节参数w和b的值&#xff0c;得到最小的损失函数值J。 如下&#xff1a;是梯度下降的概念图。 我们有一个损失函数 J(w,b)&#xff0c;包含两个参数w和b&#xff08;你可以想象成J(w,b) w*x…