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

news2024/11/20 14:42:47

文章目录

    • 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.coloradmin.cn/o/1370922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java缓冲字符流

PrintWriter的自动行刷新功能 如果实例化PW时第一个参数传入的是一个流&#xff0c;则此时可以再传入一个boolean型的参数&#xff0c;此值为true时就打开了自动行刷新功能。 即: 每当我们用PW的println方法写出一行字符串后会自动flush. package io; ​ import java.io.*; i…

[Docker] Mac M1系列芯片上完美运行Docker

docker pull qinchz/dm8-arm64 container_name: dm8ports:- "5236:5236"mem_limit: 1gmemswap_limit: 1gvolumes:- /data/dm8:/home/dmdba/data 数据库实例参数已修改&#xff0c;接近oracle使用习惯 #字符集 utf-8 CHARSET1 #VARCHAR 类型对象的长度以字符为单位 …

工程监测领域振弦采集仪的数据处理与分析方法探讨

工程监测领域振弦采集仪的数据处理与分析方法探讨 在工程监测领域&#xff0c;振弦采集仪是常用的一种设备&#xff0c;用于测量和记录结构物的振动数据。数据处理和分析是使用振弦采集仪得到的数据的重要环节&#xff0c;可以帮助工程师了解结构物的振动特性&#xff0c;评估…

C++信息学奥赛1087:级数求和

#include<bits/stdc.h> using namespace std; int main() {int k;cin>>k; // 从标准输入获取一个整数kdouble sum0; // 初始化sum变量为0&#xff0c;用于存储累加的和int i; // 初始化循环变量ifor(i1;;i){ // 无限循环&#xff0c;直到满足条件时跳出循环sum(dou…

C#,字符串匹配(模式搜索)KMP算法的源代码与数据可视化

D.E.Knuth J.H.Morris 一、KMP算法 KMP 算法&#xff08;Knuth-Morris-Pratt 算法&#xff09;是其中一个著名的、传统的字符串匹配算法&#xff0c;效率比较高。 KMP算法由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt在 Brute-Force算法的基础上提出的模式匹配的改进算法。…

CDN加速之HTTPS配置

记录一下HTTPS配置的免费证书配置 2张图搞定 最后补充说明&#xff1a; 由于CDN采用的Tengine服务基于Nginx&#xff0c;因此开启HTTPS安全加速功能的加速域名&#xff0c;只支持上传Nginx能读取的PEM格式的证书。如果证书不是PEM格式&#xff0c;需转换成PEM格式。转换方法&a…

巧用 G5g 畅游Android流媒体游戏

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 巧用 G5g 畅游Android流媒体游戏 概览 Amazon EC2 G5g 实例由 AWS Graviton2 处理器提供支持&#xff0c;并配备 NVIDIA T4G Tensor Core GPU&#xff0c;可为 Andro…

SAP SMARTFORMS 打印表换行

表单打印自动换行&#xff0c;值的拼接 cl_abap_char_utilities>cr_lfSMARTFORMS 设置 程序传值处理 TYPES: BEGIN OF ty_c, zm_zd TYPE char25, END OF ty_c. DATA: lt_ty1 TYPE TABLE OF ty_c, lt_ty2 TYPE TABLE OF ty_c, ls_t…

重新认识canvas,掌握必要的联结密码

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

极智AI | 谈谈通义舞王背后的技术Animate Anyone 让任何人动起来

欢迎关注我的公众号 [极智视界],获取我的更多技术分享 大家好,我是极智视界,本文分享了 谈谈通义舞王背后的技术Animate Anyone 让任何人动起来。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 来吧,让我们…

云平台API服务

问题 云平台API服务 详细问题 笔者今天需要使用病虫害图像识别API&#xff0c;游览器搜索后&#xff0c;结果如下&#xff1a; 点击第一个搜索结果&#xff1a;RMB50000&#xff0c;虽然提供1000000次病虫害识别&#xff0c;但是笔者没有这般大地需求&#xff0c;有没有可能…

vue-vben-admin 与.net core 结合实例 【自学与教学 小白教程】---第3节

ue-vben-admin 与.net core 结合实例 这里计划使用.net core 作为后端 。目标&#xff1a;打造好看 易用 开箱即用 的netcore一体化框架。Vue Vben Admin For NetCore 取命 hcrain-vvadmin 我不是前端人员 但有时开发还是要写一些界面。 之前使用layui是时候 狠心升级下了。 …

Linux入门攻坚——12、Linux网络属性配置相关知识2

CentOS 7网络属性配置&#xff1a; 传统命名机制&#xff1a;以太网eth[0,1,2,...]&#xff0c;wlan[0,1,2...] 可预测功能的命名机制&#xff1a; udev支持多种不同的命名方案&#xff1a; Firmware &#xff0c;拓扑结构 在对待设备文件这块&#xff0c;Linux改…

从无到有:AI绘画API在插画与游戏设计中的应用

引言 随着人工智能技术的快速发展&#xff0c;AI绘画API已经逐渐成为插画和游戏设计领域的新宠。这些API能够将创意与技术完美结合&#xff0c;帮助设计师快速生成高质量的图像&#xff0c;为插画和游戏产业带来了巨大的变革。 AI绘画API的工作原理 AI绘画API基于深度学习和…

CentOS忘记root密码重置方法

1.开机进入引导界面&#xff0c;按键盘e 2.找到linux16开头的最后一行&#xff0c;添加rd.break&#xff0c;按下Ctrlx进入救援模式 3.执行命令&#xff08;注意空格&#xff09; 1&#xff09;mount -o rw,remount /sysroot 2&#xff09;chroot /sysroot 3&#xff09;pas…

基于模块自定义扩展字段的后端逻辑实现(一)

目录 一&#xff1a;背景介绍 二&#xff1a;实现过程 三&#xff1a;字段标准化 四&#xff1a;数据存储 五&#xff1a;数据扩展 六&#xff1a;表的设计 一&#xff1a;背景介绍 最近要做一个系统&#xff0c;里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表…

sympy质点模型

文章目录 质点动能和动能势能角动量 质点 粒子&#xff0c;或者说质点&#xff0c;堪称经典物理中的核心模型了&#xff0c;其所具备的重要物理量&#xff0c;包括质量、能量、动量、角动量之类&#xff0c;也早已从经典力学蔓延出去&#xff0c;成为内涵更加深刻的物理概念。…

Linux系统操作——tcping安装与使用

目录 .一、安装 1、安装依赖 tcptraceroute和bc 2、安装tcping 3、赋予tcping执行权限 4、测试 5、tcping返回结果说明 二、使用说明&#xff08;参数&#xff09; 一、安装 1、安装依赖 tcptraceroute和bc 【 CentOS 或 RHEL】 sudo yum install -y tcptraceroute bc…

Open CASCADE学习|创建拓朴

目录 1、创建点gp_Pnt 2、创建向量gp_Vec 3、创建边TopoDS_Edge 4、线网络TopoDS_Wire 5、面TopoDS_Face 6、体TopoDS_Shape OpenCascade中的拓朴实体如下图所示&#xff0c;其中Compound可以包含很多Solid&#xff1b;Solid由Shell包围而成&#xff1b;Shell由相连的Fac…

通信用磷酸铁锂电池做YD/T2344.1招标报告

通信用磷酸铁锂电池做YD/T2344.1标准报告 YD/T 2344.1标准范国&#xff1a; YD/T 2344.1规定了通信用磷酸铁鲤电池组的定义、要求、试验方法、检验规则及标志、包装、运输和贮存本部分适用于电池模块与电池管理系统集成为一体的通信用磷酸铁电池组。 YD/T 2344.1测试要求&…