栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ Poco库的编译和使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ Poco库的编译和使用

C++ Poco库的编译和使用

flyfish

文章目录
  • C++ Poco库的编译和使用
    • 环境
    • 源码下载地址
    • 编译依次执行
    • CMakeLists.txt文件配置
    • 代码实现
    • POCO交叉编译配置

环境

Ubuntu18.04
Qt 5.14.2

源码下载地址

https://github.com/pocoproject/poco

编译依次执行

./configure --no-tests --no-samples --config=Linux --omit=Data --shared --static
make
sudo make install

–omit表示排除项目,Data中的SQlite,MySQL,ODBC等排除掉,这里不编译
如果要指定安装目录需要加参数 --prefix,这里是默认目录安装到

/usr/local/lib
/usr/local/include

以http为例说明如何使用

CMakeLists.txt文件配置
cmake_minimum_required(VERSION 3.5)

project(example LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)



# set the POCO paths and libs
set(POCO_PREFIX "/usr/local") # the directory containing "include" and "lib"
set(POCO_INCLUDE_DIR"${POCO_PREFIX}/include")
set(POCO_LIB_DIR "${POCO_PREFIX}/lib")
set(POCO_LIBS
        "${POCO_LIB_DIR}/libPocoNet.so"
        "${POCO_LIB_DIR}/libPocoUtil.so"
        "${POCO_LIB_DIR}/libPocoFoundation.so"
        "${POCO_LIB_DIR}/libPocoNetSSL.so")


add_executable(example
  main.cpp
)
target_link_libraries(example "${POCO_LIBS}")
代码实现
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


int main(int argc, char *argv[])
{

    try
    {

        Poco::URI    url("https://docs.pocoproject.org/current/");
        Poco::Net::HTTPSClientSession session(url.getHost(),url.getPort());
        Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET,url.getPathAndQuery());
        session.sendRequest(req);
        Poco::Net::HTTPResponse res;
        std::istream & rs = session.receiveResponse(res);
        Poco::Net::HTTPResponse::HTTPStatus status = res.getStatus();
        std::string result;
        Poco::StreamCopier::copyToString(rs, result);
        if (Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK == status)
        {
            std::cout << "status HTTP_OK:"< 

当成功的时候,result存储的返回网页的内容,其中getReason的内容已经包括result的内容。
以上是PC版本Poco库的编译和使用

POCO交叉编译配置
CMAKE_CXX_FLAGS:STRING=  -pthread -ldl  -lrt

文档中说SyslogChannel只应用于unix系统,防止在嵌入式系统中出现问题,
这里在config.h定义

#define POCO_NO_SYSLOGCHANNEL
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号