日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++ Poco庫的編譯和使用

作者:TheOldManAndTheSea 更新時間: 2022-05-13 編程語言

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

原文鏈接:https://blog.csdn.net/flyfish1986/article/details/124673651