網站首頁 編程語言 正文
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
相關推薦
- 2022-10-17 Tomcat?Catalina為什么不new出來原理解析_Tomcat
- 2022-01-31 有關“數據統計”的一些概念 -- PV UV VV IP跳出率等
- 2022-12-05 Android?RecyclerView緩存復用原理解析_Android
- 2022-05-20 PyQt5實現數據的增刪改查功能詳解_python
- 2022-10-13 Pygame?zero集合_python
- 2022-02-07 SSH連服務器提示“Permission denied,please try again”的原因與解
- 2023-04-01 一文初探?Goroutine?與?channel基本用法_Golang
- 2023-07-26 vite中的glob-import批量導入
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支