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.mfbz.cn/a/307040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes WebHook 入门 -- 入门案例: apiserver 接入 github

博客原文 文章目录 k8s 集群配置介绍Admission WebhookWebHook 入门实践: github 认证接入web 服务器Dockerfile 镜像制作amd64x86_64构造镜像检验镜像 Makefilewebhook 接入 apiserverwebhook.yamlapiserver 挂载 webconfig在 github 中创建认证 token将 token 添加到 kubecon…

mybatisplus快速入门-个人理解版

mybatisplus快速入门 1.快速入门1.1准备开发环境-idea2019.2.1版第一步&#xff1a;新建工程第二步&#xff1a;导入依赖 1.2创建数据库和表创建库表添加数据 1.3编写代码进行测试第一步&#xff1a;配置application.yml第二步&#xff1a;添加实体类第三步&#xff1a;添加map…

如何实现公网访问GeoServe Web管理界面共享空间地理信息【内网穿透】

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

前端面试题集合五(css)

CSS 面试知识点总结 本部分主要是笔者在复习 CSS 相关知识和一些相关面试题时所做的笔记&#xff0c;如果出现错误&#xff0c;希望大家指出&#xff01; 目录 1.介绍一下标准的 CSS 的盒子模型&#xff1f;低版本 IE 的盒子模型有什么不同的&#xff1f;2.CSS 选择符有哪些…

MobileViT

CNN与transformer的混合。 轻量级、通用的、对移动端友好的vision transformer模型。

快乐学Python,数据分析之获取数据方法「公开数据或爬虫」

学习Python数据分析&#xff0c;第一步是先获取数据&#xff0c;为什么说数据获取是数据分析的第一步呢&#xff0c;显而易见&#xff1a;数据分析&#xff0c;得先有数据&#xff0c;才能分析。 作为个人来说&#xff0c;如何获取用于分析的数据集呢&#xff1f; 1、获取现成…

实习学习总结(2023-12-14---2024-1-08)

CS汉化 首先下载CSagent&#xff0c;百度网盘中有 按照如下放置目录 使用出现中文乱码 插件使用乱码主要跟cs客户端加载没有指定UTF-8编码有关 指定编码的字符&#xff1a;-Dfile.encodingUTF-8 上面的字段添加到启动脚本里面即可&#xff0c;如&#xff1a; java -Dfile.e…

Apache Doris (六十一): Spark Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Spark Doris Connector

【LeetCode:49. 字母异位词分组 | 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

前端面试题集合六(高频)

1、vue实现双向数据绑定原理是什么&#xff1f; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>…

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测&#xff08;完整源码和…

Go语言学习笔记(二)

Go语言的学习资源 以下是一些推荐的Go语言学习资源的链接&#xff1a; Go语言教程&#xff1a;https://golang.org/doc/Go by Example&#xff1a;Go by ExampleGolang Tutorials&#xff1a;https://golangtutorials.com/Go语言第一课&#xff08;慕课网&#xff09;&#x…

Linux的网络配置命令和网络设置实操

目录 一、网路命令 1.ifconfig 2.hostname 3.route 4.netstat 5.ss&#xff08;socket statistics&#xff09; 6.ping 7.nslookup 8.tcpdump 二、实操 1.单个网卡修改 2.双网卡配置 3.bond网卡绑定 一、网路命令 查看Linux基础的网络设置 网关route -nIP地址ifc…

【C#】C#实现PDF合并

文章目录 一、下载iTextSharp.dll下载iTextSharp.dll命名空间引入 二、界面设计三、代码全局变量选择文件夹的按钮确认合并的按钮 四、导出结果五、完整源码 一、下载iTextSharp.dll 下载iTextSharp.dll 可使用联机方式或者文件下载方式。 命名空间引入 代码开始时引入了一…

AI绘画Midjourney绘画提示词Prompt大全,各种风格大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

web自动化之巩固练习(第九天)

练习1 一.对于这个网址 https://www.51job.com 1.点击搜索 2.输入搜索关键词-python 3.选择工作职能--互联网技术-高级软件工程师 4.地区选择杭州&#xff08;点击地区按钮&#xff0c;把默认的城市取消掉&#xff0c;选择杭州&#xff0c;点击确定按钮&#xff09; 5.打印搜索…

Asp .Net Web应用程序(.Net Framework4.8)网站发布到IIS

开启IIS 如果已开启跳过这步 打开控制面板-程序 打开IIS 发布Web程序&#xff08;.Net Framework 4.8 web网页&#xff09; 进入IIS管理器新建一个应用池 新建一个网站 网站创建完毕 为文件夹添加访问权限 如果不添加访问权限&#xff0c;运行时将会得到如下错误 设置权限 勾…

华为 1+X《网络系统建设与运维(高级)》认证模拟实验上机试题

华为 1X《网络系统建设与运维&#xff08;高级&#xff09;》认证模拟实验上机试题 一、考试背景二、考试说明2.1考试分数说明2.2考试要求2.3考试环境介绍2.4启动考试环境2.5保存答案(非常重要) 三、考试正文3.1注意事项3.2校区内&#xff08;LAN&#xff09;3.2.1任务 1&#…

IPC之十四:使用libdbus通过select()接收D-Bus消息的实例

在『进程间通信』系列文章中前面已经有三篇关于D-Bus的文章&#xff0c;本文继续讨论D-Bus&#xff1b;libdbus抽象了实现IPC时实际使用的方式(管道、socket等)&#xff0c;libdbus允许在一个D-Bus连接上添加一个watch&#xff0c;通过watch对实际IPC中使用的文件描述符进行监视…

MySQL之导入、导出

目录 一.navicat导入导出二.mysqldump命令导入导出2.1 导出2.2 导入 三.LOAD DATA INFILE命令导入导出四.远程备份五.思维导图 一.navicat导入导出 使用Navicat工具导入t_log 共耗时 45s; 二.mysqldump命令导入导出 2.1 导出 导出表数据和表结构&#xff1a; 语法&#xff…
最新文章