windows编译poco c++库

简介: windows编译poco c++库

背景

最近有了解到poco c++库,这里记录下编译及使用过程。

最开始使用的vs studio 2022 和 poco 1.12.4版本编译,不管openssl 使用哪种版本,都会编译报错,最后妥协了。

参考:https://www.bilibili.com/read/cv14165658/

工具:vs studio 2019

一、VS Studio 2019安装

下载地址,选择相应的版本,安装过程这里不赘述。

二、openssl 安装

说明:openssl有两种安装方式:

  1. 下载源码包,手动编译安装,过程比较麻烦,这里选择第二种;
  2. 下载地址,当前最新版本是v3.1.1。一路向下即可。

安装完成,默认安装路径:C:\Program Files (x86)\OpenSSL-Win32

三、poco 下载

Github地址,下载完解压。准备进行如下操作:

3.1 修改poco目录下的 buildwin.cmd 文件,加入上面你安装的openssl的路径
set POCO_BASE=%CD%
set PATH=%POCO_BASE%\bin64;%POCO_BASE%\bin;%PATH%
set OPENSSL_DIR=C:\Program Files (x86)\OpenSSL-Win32
set OPENSSL_INCLUDE=C:\Program Files (x86)\OpenSSL-Win32\include
set OPENSSL_LIB=C:\Program Files (x86)\OpenSSL-Win32\lib;C:\Program Files (x86)\OpenSSL-Win32\lib\VC;C:\Program Files (x86)\OpenSSL-Win32\lib\VC\static
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
set LIB=%LIB%;%OPENSSL_LIB%
rem VS_VERSION {140 | 150 | 160}
if "%1"=="" goto usage
3.2 修改poco目录下的components 文件

去掉MYSQL 及 postgreSQL,默认会编译对应模块,如果没有安装对应模块会报错。

3.3 编译安装

打开vs studio 2019,在工具栏选择“视图”–>“终端”,进入到解压后的poco目录,vs 2019 对应build_vs160.cmd脚本。

3.3.1 编译报错

(1)xxx sdk 8.1 xxx 解决办法:进如Foundation目录,打开如下项目。

右击“属性” --> “常规”–"Windows SDK 版本选择最新 "即可。注意四个项目都需要做同样的修改。最后关闭项目,点击保存即可。

(2)can’t openssl/ec.h no Such file,没有配置openssl路径。

3.4 等待编译完成

会在poco目录下生成bin和lib文件夹。其中bin目录下是动态库,lib目录下是静态库。

四、poco测试

工具栏“文件”–>“新建”–>“项目” --> “空项目” ,在源文件中新建main.cpp。注意,需要在项目的属性中加入刚才编译出的poco的头文件的路径和依赖库的路径。

#include <Poco/Thread.h> 
#include <Poco/Runnable.h> 
#include <iostream> 
class HelloRunnable : public Poco::Runnable
{
    virtual void run()
    {
        std::cout << "Hello, world!" << std::endl;
    }
};
int main(int argc, char** argv)
{
    HelloRunnable runnable;
    Poco::Thread thread;
    thread.start(runnable);
    thread.join();
    return 0;
}

如果在运行后提示找不到,PocoFoundationd.dll 库,找到该动态库文件,放入执行程序的同一目录下即可。

相关文章
|
2月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
689 2
|
2月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
157 11
|
2月前
|
缓存 算法 程序员
C++STL底层原理:探秘标准模板库的内部机制
🌟蒋星熠Jaxonic带你深入STL底层:从容器内存管理到红黑树、哈希表,剖析迭代器、算法与分配器核心机制,揭秘C++标准库的高效设计哲学与性能优化实践。
C++STL底层原理:探秘标准模板库的内部机制
|
2月前
|
IDE 编译器 开发工具
msvcp100.dll,msvcp120.dll,msvcp140.dll,Microsoft Visual C++ 2015 Redistributable,Visual C++ 运行库安装
MSVC是Windows下C/C++开发核心工具,集成编译器、链接器与调试器,配合Visual Studio使用。其运行时库(如msvcp140.dll)为程序提供基础函数支持,常因缺失导致软件无法运行。通过安装对应版本的Microsoft Visual C++ Redistributable可解决此类问题,广泛应用于桌面软件、游戏及系统级开发。
385 2
|
3月前
|
并行计算 C++ Windows
|
6月前
|
存储 算法 安全
c++模板进阶操作——非类型模板参数、模板的特化以及模板的分离编译
在 C++ 中,仿函数(Functor)是指重载了函数调用运算符()的对象。仿函数可以像普通函数一样被调用,但它们实际上是对象,可以携带状态并具有更多功能。与普通函数相比,仿函数具有更强的灵活性和可扩展性。仿函数通常通过定义一个包含operator()的类来实现。public:// 重载函数调用运算符Add add;// 创建 Add 类的对象// 使用仿函数return 0;
243 0
|
11月前
|
自然语言处理 编译器 C语言
为什么C/C++编译腰要先完成汇编
C/C++ 编译过程中先生成汇编语言是历史、技术和实践的共同选择。历史上,汇编语言作为成熟的中间表示方式,简化了工具链;技术上,分阶段编译更高效,汇编便于调试和移植;实践中,保留汇编阶段降低了复杂度,增强了可移植性和优化能力。即使在现代编译器中,汇编仍作为重要桥梁,帮助开发者更好地理解和优化代码。
为什么C/C++编译腰要先完成汇编
|
11月前
|
JSON C++ 数据格式
C++20 高性能基础库--兰亭集库助力开发者构建高性能应用
这次分享的主题是《高性能基础库--兰亭集库助力开发者构建高性能应用》的实践经验。主要分为三个部分: 1. 业务背景 2. 雅兰亭库架构 3. 业务优化
375 9
|
11月前
|
XML 网络协议 API
超级好用的C++实用库之服务包装类
通过本文对Boost.Asio、gRPC和Poco三个超级好用的C++服务包装类库的详细介绍,开发者可以根据自己的需求选择合适的库来简化开发工作,提高代码的效率和可维护性。每个库都有其独特的优势和适用场景,合理使用这些库可以极大地提升C++开发的生产力。
274 11