Windows10 下通过 Visual Studio2022 编译 openssl 3.4 + POCO 1.14.1

Windows10 下通过 Visual Studio2022 编译 POCO库

  • 1 POCO库简介
  • 2 环境准备
    • 2.1 VS Studio 2022 安装
    • 2.2 openssl 安装
  • 3 编译 POCO 1.14.1
    • 3.1 下载源码
    • 3.2 修改编译配置
      • 3.2.1 修改 poco\Crypto 工程 引用 openssl 的配置
      • 3.2.2 修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置
      • 3.2.3 修改 poco\DNSSD\Bonjour 工程
    • 3.3 使用 build_vs170.cmd 编译
    • 3.4 XXX_vs170.sln 单个编译

1 POCO库简介

POCO 是一个C++的开源库集。同一般的C++库相比,POCO的特点是提供了整一个应用框架。如果要做C++程序应用框架的快速开发,STL + boost + Poco + Qt + Mysql 是个不错的选择。
POCO库结构如下:
在这里插入图片描述)

2 环境准备

2.1 VS Studio 2022 安装

下载地址:https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/release-notes
我下载的是企业版,安装就不多说了。

2.2 openssl 安装

  • 编译 openssl 安装
    参考《Windows10 下通过 Visual Studio2022 编译 openssl 3.4》

  • 下载安装
    下载地址:https://slproweb.com/products/Win32OpenSSL.html,当前最新版本是v3.4.0,下载Win64即可。
    在这里插入图片描述
    我使用的编译的方式,记住两个路径,后面需要使用。

  • 头文件路径:

    E:\work\Source\Repos\wanjiaStation\WJSocket\openssl\bin\x64\debug\include

  • 库文件路径:

    E:\work\Source\Repos\wanjiaStation\WJSocket\openssl\bin\x64\debug\lib

3 编译 POCO 1.14.1

3.1 下载源码

Githup下载地址:

https://github.com/pocoproject/poco

git clone https://github.com/pocoproject/poco
git checkout remotes/origin/poco-1.14.1 -b proc-1.14.1j

3.2 修改编译配置

我们来看源码目录 poco 下的这几个文件:
在这里插入图片描述
修改 components 文件,去掉没有安装的模块:
去掉 MYSQL 及 postgreSQL,默认会编译没有这两个没有安装的模块。

网上介绍的修改 buildwin.cmd 中设置 OPENSSL 的方式没有成功,我采用直接在项目工程属性中设置的方式。

3.2.1 修改 poco\Crypto 工程 引用 openssl 的配置

  • 配置 openssl 附加包含目录:
C:\work\Source\Repos\WebSocket\openssl\bin\x64\debug\include

在这里插入图片描述

  • 配置 openssl 附加库目录:
C:\work\Source\Repos\WebSocket\openssl\bin\x64\debug\lib

在这里插入图片描述

  • 增加附加依赖项:
libcrypto.lib

在这里插入图片描述

3.2.2 修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置

修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置,头文件和库目录和 Crypto 一样设置。

  • 增加附加依赖项:
libssl.lib;libcrypto.lib;

在这里插入图片描述

-增加预处理器定义:

_CRT_SECURE_NO_WARNINGS

在这里插入图片描述

3.2.3 修改 poco\DNSSD\Bonjour 工程

无法打开包括文件: “dns_sd.h”: No such file or directory

bonjour 是苹果公司发布的一个基于ZEROCONF工作组(IETF下属小组)的工作,用于实现零配置网络联网的解决方案。
我们可以去官网了解 Bonjour - Apple Developer:https://developer.apple.com/bonjour/

下载 Bonjour SDK for Windows,地址:https://developer.apple.com/download/all/?q=Bonjour%20SDK%20for%20Windows
安装(Bonjour服务启动,依赖于mDNSResponder.exe进程)

附:源码地址:https://opensource.apple.com/tarballs/mDNSResponder/

如果不需要使用 poco\DNSSD,我们可以像MySQL 一样,在 components 文件删除就不会编译以下项目了:

DNSSD
DNSSD/Avahi
DNSSD/Bonjour

3.3 使用 build_vs170.cmd 编译

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

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

    相关文章

    厉害了多模态对齐!新思路直接发高区!小红书、国科大都在抢着发!

    多模态是个非常热门的话题,这其中,“多模态对齐”已经被验证非常重要,它能够提升AI模型的跨模态理解和情感分析精度,是未来多模态大模型商业化的必要条件,研究热度不言而喻。 就说最近的大佬团队,小红书前…

    ubuntu20.04安装imwheel实现鼠标滚轮调速

    ubuntu20.04安装imwheel实现鼠标滚轮调速 Ubuntu 系统自带的设置中仅具备调节鼠标速度的功能,而无调节鼠标滚轮速度的功能。其默认的鼠标滚轮速度较为缓慢,在查看文档时影响尚可接受,但在快速浏览网页时,滚轮速度过慢会给用户带来…

    MacOS安装MySQL

    官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码(不少于8位),这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…

    dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

    RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…

    Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

    104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

    WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输

    WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输 引言:操作步骤搭建安装Internet Information Services (IIS) 管理器配置Internet Information Services (IIS) 管理器配置远程域名访问地址 引言: 相信很多朋友都有过把…

    MySQL的分析查询语句

    【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

    前端开发 之 12个鼠标交互特效上【附完整源码】

    前端开发 之 12个鼠标交互特效上【附完整源码】 文章目录 前端开发 之 12个鼠标交互特效上【附完整源码】一:彩色空心爱心滑动特效1.效果展示2.HTML完整代码 二:彩色实心爱心滑动特效1.效果展示2.HTML完整代码 三:粒子连结特效1.效果展示2.HT…

    深度学习之超分辨率算法——SRGAN

    更新版本 实现了生成对抗网络在超分辨率上的使用 更新了损失函数,增加先验函数 SRresnet实现 import torch import torchvision from torch import nnclass ConvBlock(nn.Module):def __init__(self, kernel_size3, stride1, n_inchannels64):super(ConvBlock…

    路由器做WPAD、VPN、透明代理中之间一个

    本文章将采用家中TP-Link路由器 路由器进行配置DNS DNS理解知识本文DNS描述参考:网络安全基础知识&中间件简单介绍_计算机网络中间件-CSDN博客 TP LINK未知的错误,错误编号:-22025 TP-LINK 认证界面地址:https://realnam…

    CentOS HTTPS自签证书访问失败问题的排查与解决全流程

    sudo cp harbor.crt /usr/local/share/ca-certificates/sudo yum install -y ca-certificatessudo update-ca-trust force-enablesudo update-ca-trust extract 但是访问 https://172.16.20.20 仍然报错 * About to connect() to 172.16.20.20 port 443 (#0) * Trying 172.16.2…

    Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

    Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点: Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装: T2、使用 …

    【蓝桥杯选拔赛真题96】Scratch风车旋转 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

    目录 scratch风车旋转 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

    奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试

    Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试用无痕浏览器可以正常访问 关闭代理无效清缓存和Cookies无效。考虑无痕浏览器模式下插件不生效,尝试把chrome 插件也禁用,发现有效,是该扩展程序的缘故

    sentinel学习笔记7-熔断降级

    本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏,写的好值得推荐,我整理的有所删减,推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html 限流需要我们根据不同的硬件条件做好压测,不好准确评估…

    记录--uniapp 安卓端实现录音功能,保存为amr/mp3文件

    🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 功能实现需要用到MediaRecorder、navigator.mediaDevices.getUserMedia、Blob等API,uniapp App端不支持,需要借助renderjs来实现 实现逻辑 通过naviga…

    步进电机位置速度双环控制实现

    步进电机位置速度双环控制实现 野火stm32电机教学 提高部分-第11讲 步进电机位置速度双环控制实现(1)_哔哩哔哩_bilibili PID模型 位置环作为外环,速度环作为内环。设定目标位置和实际转轴位置的位置偏差,经过位置PID获得位置期望,然后讲位置期望(位置变化反映了转轴的速…

    MySQL 8.0:explain analyze 分析 SQL 执行过程

    介绍 MySQL 8.0.16 引入一个实验特性:explain formattree ,树状的输出执行过程,以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE,在 formattree 基础上,使用时,会执行 SQL &#…

    事务、管道

    目录 事务 相关命令 悲观锁 乐观锁 管道 实例 Pipeline与原生批量命令对比 Pipeline与事物对比 使用Pipeline注意事项 事务 相关命令 命令描述discard取消事务,放弃执行事务块内的所有命令exec执行所有事务块内的事务(所有命令依次执行&#x…

    list的常用操作

    list的介绍 list是序列容器,它允许在常数范围O(1)进行插入和删除在这段序列的任意位置,并且可以双向遍历 它是弥补vector容器的缺点,与vector有互补的韵味, 这里我们可以将其进行与vector进行对比 vect…