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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

C++ Poco庫(kù)的編譯和使用

作者:TheOldManAndTheSea 更新時(shí)間: 2022-05-13 編程語(yǔ)言

C++ Poco庫(kù)的編譯和使用

flyfish

文章目錄

  • C++ Poco庫(kù)的編譯和使用
    • 環(huán)境
    • 源碼下載地址
    • 編譯依次執(zhí)行
    • CMakeLists.txt文件配置
    • 代碼實(shí)現(xiàn)
    • POCO交叉編譯配置

環(huán)境

Ubuntu18.04
Qt 5.14.2

源碼下載地址

https://github.com/pocoproject/poco

編譯依次執(zhí)行

在這里插入圖片描述

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

–omit表示排除項(xiàng)目,Data中的SQlite,MySQL,ODBC等排除掉,這里不編譯
如果要指定安裝目錄需要加參數(shù) --prefix,這里是默認(rèn)目錄安裝到

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

以http為例說(shuō)明如何使用

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}")

代碼實(shí)現(xiàn)

#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:"<

當(dāng)成功的時(shí)候,result存儲(chǔ)的返回網(wǎng)頁(yè)的內(nèi)容,其中g(shù)etReason的內(nèi)容已經(jīng)包括result的內(nèi)容。
以上是PC版本Poco庫(kù)的編譯和使用

POCO交叉編譯配置

CMAKE_CXX_FLAGS:STRING=  -pthread -ldl  -lrt

文檔中說(shuō)SyslogChannel只應(yīng)用于unix系統(tǒng),防止在嵌入式系統(tǒng)中出現(xiàn)問(wèn)題,
這里在config.h定義

#define POCO_NO_SYSLOGCHANNEL

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