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