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 库,找到该动态库文件,放入执行程序的同一目录下即可。

相关文章
|
20天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
19 2
|
1月前
|
算法 编译器 C语言
【C++ 异常】C++ 标准库异常类及其应用
【C++ 异常】C++ 标准库异常类及其应用
30 0
|
25天前
|
人工智能 机器人 编译器
【C++】Windows端VS code中运行CMake工程(手把手教学)
【C++】Windows端VS code中运行CMake工程(手把手教学)
|
20天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
1月前
|
存储 JSON 安全
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
66 0
|
1月前
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
48 0
|
1月前
|
Linux C++ iOS开发
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(二)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
258 2
|
1月前
|
Linux API C++
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(一)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
323 2
|
1月前
|
存储 缓存 C语言
【C/C++ 库的动态链接】深入理解动态链接器:RPATH, RUNPATH与$ORIGIN
【C/C++ 库的动态链接】深入理解动态链接器:RPATH, RUNPATH与$ORIGIN
66 0
|
18天前
|
C++
glog --- C++日志库
glog --- C++日志库