【C++第三方包安裝】Windows與Linux安裝配置redis-plus-plus指南

前言

下面主要是對于兩種環境安裝、配置、使用C++的第三方包(redis++),對于其他的第三方庫,也可以使用類似的方法進行類比安裝。

且大多數的第三方庫都可以利用工具一鍵安裝或手動編譯安裝。


Windows

要在Windows系統上快速安裝和使用Redis++,一般有手動編譯安裝與通過包管理器一鍵安裝。下面一一介紹:

方法一:使用vcpkg安裝(推薦)

簡單介紹一下,vcpkg 是一個跨平臺的開源 C/C++ 庫管理工具,可以簡化 C++ 開發過程中對第三方庫的獲取、構建和管理。

下面的命令執行時,需注意主機可以正常連接 github。

  1. 通過命令提示行(cmd)或Powershell 安裝vcpkg

    • 進入想要安裝的文件夾后,執行下面的命令。
    git clone https://github.com/microsoft/vcpkg
    .\vcpkg\bootstrap-vcpkg.bat
    
  2. 安裝Redis++

    • 安裝vcpkg后,在vcpkg所在路徑下繼續執行:
    .\vcpkg\vcpkg install redis-plus-plus
    
  3. 安裝完畢后,便可以使用,下面寫一個簡單的示例進行演示:

示例

首先確保當前環境下:

  • 已按照之前的步驟成功安裝Redis++ (通過vcpkg)
  • 本地已安裝并運行Redis服務器 (默認端口6379)
  • 已安裝CMake和C++17兼容的編譯器(如MSVC 2019/2022)
  1. 項目結構如下:

    redis_demo/
    ├── CMakeLists.txt    # CMake配置文件
    ├── src/
    │   └── main.cpp      # 主程序文件
    └── cmake/            # (可選)CMake模塊文件夾
    
  2. CMakeLists.txt 可以參考下面的內容進行編寫:

cmake_minimum_required(VERSION 3.15)
project(redis_demo)# 設置C++標準
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 指定vcpkg工具鏈(根據vcpkg.cmake的實際路徑調整)
set(CMAKE_TOOLCHAIN_FILE "./vcpkg.cmake")# 查找Redis++庫
find_package(redis++ CONFIG REQUIRED)# 添加可執行文件(此處用的是main.cpp)
add_executable(${PROJECT_NAME} src/main.cpp) # 鏈接Redis++庫
target_link_libraries(${PROJECT_NAME} PRIVATE redis++::redis++)
  1. 編寫一個測試連接代碼:
#include <sw/redis++/redis++.h>
#include <iostream>
#include <string>using namespace sw::redis;
using namespace std;int main() {try {// 1. 創建Redis連接// 格式: tcp://[用戶名:密碼@]主機[:端口][/數據庫]// auto redis = Redis("tcp://127.0.0.1:6379");// 這里使用 ConnectionOptions 進行連接sw::redis::ConnectionOptions opts;opts.host = "127.0.0.1";   // Redis服務器地址opts.port = 6379;          // Redis端口opts.password = "123456";  // 密碼(如果沒有密碼可以省略)// opts.db = 0;            // 可選:選擇數據庫(默認0)sw::redis::Redis redis(opts);  // 正確構造Redis對象cout << "成功連接到Redis服務器!" << endl;// 2. 設置鍵值redis.set("my_key", "Hello Redis++");// 3. 獲取值auto val = redis.get("my_key");if (val) {cout << "獲取的值: " << *val << endl;} else {cout << "鍵不存在" << endl;}// 4. 檢查鍵是否存在if (redis.exists("my_key")) {cout << "鍵存在" << endl;}// 5. 刪除鍵redis.del("my_key");} catch (const Error &e) {cerr << "Redis錯誤: " << e.what() << endl;return 1;} catch (const exception &e) {cerr << "標準錯誤: " << e.what() << endl;return 1;}return 0;
}
  1. 執行cmake,編譯項目:
    • 可以在命令行中執行:
      1. 生成構建系統:
      cmake -B build -DCMAKE_TOOLCHAIN_FILE=D:/Coder/tools/vcpkg/scripts/buildsystems/vcpkg.cmake
      
      1. 編譯項目:
      cmake --build build --config Release
      
      1. 運行程序:
      ./build/Release/redis_demo.exe
      
    • 也可以在vs下進行運行:
      1. 用vs打開項目后,會生成CMakeLists.json文件,打開后進行配置vcpkg.cmake的路徑即可執行:
        在這里插入圖片描述
      2. 此時執行命令,獲取結果:
        在這里插入圖片描述

方法二:使用NuGet(Visual Studio用戶)

首先確保vs下安裝了 NuGet 包管理工具:

在這里插入圖片描述

  1. 在Visual Studio中打開您的項目
  2. 右鍵點擊項目 → “管理NuGet程序包”
  3. 搜索 “redis-plus-plus” 并安裝

在這里插入圖片描述

或去nuget官網直接下載nuget 官網
在這里插入圖片描述

方法三:手動編譯安裝

  1. 下載源碼

    git clone https://github.com/sewenew/redis-plus-plus.git
    cd redis-plus-plus
    
  2. 編譯安裝

    mkdir build
    cd build
    cmake ..
    cmake --build . --config Release
    cmake --install .
    
  3. 設置頭文件和庫文件路徑

    Redis++默認會安裝到C:\Program Files (x86)\redis-plus-plus,包含:

    • 頭文件路徑:include\
    • 庫文件路徑:lib\bin\(動態庫)

    假設使用的是默認安裝路徑,在項目中需要配置:

    • 包含路徑:添加 C:\Program Files (x86)\redis-plus-plus\include
    • 庫路徑:添加 C:\Program Files (x86)\redis-plus-plus\lib
  4. 鏈接庫文件

    根據編譯類型選擇鏈接的庫:

    • Debug模式redis++d.lib(靜態庫)或 redis++d.dll(動態庫)
    • Release模式redis++.libredis++.dll

    在CMake中配置示例:

    find_package(hiredis REQUIRED)  # Redis++依賴hiredis
    find_package(redis++ REQUIRED)target_include_directories(your_target PRIVATE "C:/Program Files (x86)/redis-plus-plus/include")
    target_link_libraries(your_target PRIVATE redis++::redis++)
    

代碼示例

不管使用哪種方式安裝完成后,都可以通過下面的代碼進行測試:

#include <sw/redis++/redis++.h>
#include <iostream>
#include <string>using namespace sw::redis;
using namespace std;int main() {try {// 1. 創建Redis連接// 格式: tcp://[用戶名:密碼@]主機[:端口][/數據庫]// auto redis = Redis("tcp://127.0.0.1:6379");// 這里使用 ConnectionOptions 進行連接sw::redis::ConnectionOptions opts;opts.host = "127.0.0.1";   // Redis服務器地址opts.port = 6379;          // Redis端口opts.password = "123456";  // 密碼(如果沒有密碼可以省略)// opts.db = 0;            // 可選:選擇數據庫(默認0)sw::redis::Redis redis(opts);  // 正確構造Redis對象cout << "成功連接到Redis服務器!" << endl;// 2. 設置鍵值redis.set("my_key", "Hello Redis++");// 3. 獲取值auto val = redis.get("my_key");if (val) {cout << "獲取的值: " << *val << endl;} else {cout << "鍵不存在" << endl;}// 4. 檢查鍵是否存在if (redis.exists("my_key")) {cout << "鍵存在" << endl;}// 5. 刪除鍵redis.del("my_key");} catch (const Error &e) {cerr << "Redis錯誤: " << e.what() << endl;return 1;} catch (const exception &e) {cerr << "標準錯誤: " << e.what() << endl;return 1;}return 0;
}

注意事項

  1. 使用Redis++前需要先安裝并運行Redis服務器
  2. 確保編譯器支持C++17標準
  3. Redis++依賴于hiredis庫,使用vcpkg或NuGet安裝時會自動解決此依賴

卸載方法

方法一:通過 vcpkg 安裝的卸載

  1. 使用 vcpkg 卸載
# 進入vcpkg目錄
cd D:\Coder\tools\vcpkg# 卸載redis-plus-plus
.\vcpkg remove redis-plus-plus# 如果需要,同時卸載hiredis依賴
.\vcpkg remove hiredis
  1. 完全清理 vcpkg

如果想徹底移除 vcpkg 安裝的所有包:

# 刪除vcpkg安裝的所有包
.\vcpkg remove --outdated --recurse# 或者直接刪除整個vcpkg目錄
rmdir /s /q D:\Coder\tools\vcpkg

方法二:通過 NuGet 安裝的卸載

  1. 在 Visual Studio 中卸載

    • 打開項目
    • 右鍵點擊項目 → “管理 NuGet 程序包”
    • 切換到"已安裝"選項卡
    • 找到 “redis-plus-plus” 并點擊"卸載"
  2. 手動清理

    NuGet 包通常安裝在項目目錄的 packages 文件夾中,可以手動刪除:

    rmdir /s /q .\packages\redis-plus-plus.*
    

方法三:手動編譯安裝的卸載

  1. 卸載已安裝的文件

    如果使用了 cmake --install . 安裝到默認位置:

    # 刪除頭文件
    rmdir /s /q "C:\Program Files (x86)\redis-plus-plus\include\sw"# 刪除庫文件
    del "C:\Program Files (x86)\redis-plus-plus\lib\redis++.lib"
    del "C:\Program Files (x86)\redis-plus-plus\bin\redis++.dll"# 刪除CMake配置文件
    rmdir /s /q "C:\Program Files (x86)\redis-plus-plus\lib\cmake\redis++"
    
  2. 清理環境變量

    如果手動添加過環境變量:

    1. 打開"系統屬性" → “高級” → “環境變量”
    2. 在"系統變量"中刪除或修改:
      • PATH 中相關的 Redis++ 路徑
      • 任何自定義的 REDISPP_INCLUDEREDISPP_LIB 變量

驗證卸載是否徹底

  1. 檢查殘留文件

    在命令提示框搜索系統中可能殘留的文件:

    where /R C:\ redis++.h
    where /R C:\ redis++.lib
    where /R C:\ redis++.dll
    
  2. 檢查注冊表

    Win+R 輸入 regedit,搜索 “redis-plus-plus” 或 “redis++” 刪除相關項

  3. 最終清理后驗證

    • 嘗試編譯一個使用 Redis++ 的項目,應該出現"找不到頭文件"的錯誤
    • 檢查程序運行時是否還會加載 redis++.dll(使用 Process Explorer 工具)

Linux(Ubuntu22.04)

以 Ubuntu 22.04 系統為例,下面是安裝和使用 Redis++ 的詳細步驟,包含多種安裝方式和驗證方法。

方法一:使用 apt 安裝(推薦)

  1. 安裝依賴項
sudo apt update
sudo apt install -y git cmake g++ make libhiredis-dev libssl-dev
  1. 安裝 Redis++
sudo apt install -y libredis++-dev libredis++1
  1. 驗證安裝
# 檢查頭文件
ls /usr/include/sw/redis++/redis++.h# 檢查庫文件
ls /usr/lib/x86_64-linux-gnu/libredis++.so

方法二:從源碼編譯安裝

  1. 安裝編譯依賴
sudo apt update
sudo apt install -y git cmake g++ make libhiredis-dev libssl-dev
  1. 下載源碼
git clone https://github.com/sewenew/redis-plus-plus.git
cd redis-plus-plus
  1. 編譯安裝
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
sudo make install
  1. 配置動態鏈接庫路徑
sudo ldconfig

方法三:使用 vcpkg 安裝

  1. 安裝 vcpkg
git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
  1. 安裝 Redis++
./vcpkg/vcpkg install redis-plus-plus
  1. 集成到 CMake 項目

在 CMakeLists.txt 中添加:

set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake")
find_package(redis++ CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE redis++::redis++)

代碼示例

同理,安裝配置完redis++后,編寫測試文件,檢查是否安裝成功:

  1. 創建測試文件 test_redis.cpp
#include <sw/redis++/redis++.h>
#include <iostream>int main() {try {// 連接選項sw::redis::ConnectionOptions opts;opts.host = "127.0.0.1";opts.port = 6379;// opts.password = "your_password";  // 如果有密碼// 創建Redis連接sw::redis::Redis redis(opts);std::cout << "成功連接到Redis服務器!" << std::endl;// 設置鍵值redis.set("test_key", "Hello from Ubuntu");// 獲取值auto val = redis.get("test_key");if (val) {std::cout << "獲取的值: " << *val << std::endl;}return 0;} catch (const std::exception &e) {std::cerr << "錯誤: " << e.what() << std::endl;return 1;}
}
  1. 編譯運行

    • 使用 apt 或源碼安裝的編譯命令:
    g++ -std=c++17 test_redis.cpp -o test_redis -lredis++ -lhiredis
    ./test_redis
    
    • 使用 vcpkg 安裝的編譯命令:
    g++ -std=c++17 -I/path/to/vcpkg/installed/x64-linux/include test_redis.cpp \-L/path/to/vcpkg/installed/x64-linux/lib -lredis++ -lhiredis \-o test_redis
    ./test_redis
    

常見問題解決

  1. 找不到 redis++ 庫
sudo ldconfig  # 更新庫緩存
  1. 連接 Redis 失敗

    • 確保 Redis 服務器已運行:
    sudo systemctl status redis-server
    

    如果沒有安裝 Redis 服務器(不至于),用下面的語句進行安裝:

    sudo apt install -y redis-server
    sudo systemctl start redis-server
    
  2. 編譯錯誤:C++17 不支持

    • 確保使用支持 C++17 的編譯器:
    g++ --version  # 應該 >= 7.0
    

卸載方法

  1. 從 apt 安裝的卸載
sudo apt remove --purge libredis++-dev libredis++1
  1. 從源碼安裝的卸載
# 進入編譯目錄
cd redis-plus-plus/build
sudo make uninstall

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85165.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85165.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85165.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot入門之路(二)

系列文章目錄 springboot入門之路&#xff08;一&#xff09;連續的學習漸進之路。閱讀點擊&#xff1a;springboot入門之路(一) 文章目錄 系列文章目錄3.springboot配置及注意事項3.1繼承starter parent3.2使用沒有父POM的Spring Boot3.3配置java的編譯的版本3.4使用"de…

【開源解析】基于Python+Qt打造智能應用時長統計工具 - 你的數字生活分析師

&#x1f4ca; 【開源解析】基于PythonQt打造智能應用時長統計工具 - 你的數字生活分析師 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f525; 系列專欄&#xff1a;&#x1f40d;《Python開源項目實戰》 &#x1f4a1; 熱愛不止于代碼&#xff0c;熱情源自…

PHP語法基礎篇(三):類型轉換與常量

"在完成PHP輸出函數和字符串操作的學習后&#xff0c;本篇筆記將記錄 類型轉換和 常量應用的學習過程。作為語法基礎篇的第三部分&#xff0c;將重點關注&#xff1a; 類型轉換數學函數常量定義&#xff1a;define() 與const 的使用差異魔術常量應用&#xff1a;__LINE__ …

Linux lsof 命令詳解+實例

&#x1f468;?&#x1f393;博主簡介 &#x1f3c5;CSDN博客專家 ??&#x1f3c5;云計算領域優質創作者 ??&#x1f3c5;華為云開發者社區專家博主 ??&#x1f3c5;阿里云開發者社區專家博主 &#x1f48a;交流社區&#xff1a;運維交流社區 歡迎大家的加入&#xff01…

【Cobalt Strike手冊】客戶端界面功能

工具欄 頂部的工具欄提供了快速訪問的功能&#xff0c;這些圖片的功能從左到右功能以此如下表 創建新的連接斷開當前的TeamServerListeners監聽器列表以圖形化展示表格形式展示表格展示目標管理Web服務查看獲取到的認證信息查看下載的文件查看鍵盤記錄查看截屏記錄 圖形化會話…

FastAPI本地文檔的定制技巧

磨刀不誤砍柴工&#xff0c;一份清晰的API文檔能讓前后端協作效率翻倍——源滾滾如是說 在前后端分離開發的今天&#xff0c;接口文檔的質量直接決定了團隊協作的效率。作為Python領域最受矚目的現代Web框架&#xff0c;FastAPI最大的亮點之一是其自動化交互式文檔功能。但很多…

Python 標準庫概覽

Python 標準庫非常龐大,所提供的組件涉及范圍十分廣泛,使用標準庫我們可以讓您輕松地完成各種任務。 以下是一些 Python3 標準庫中的模塊: os 模塊:os 模塊提供了許多與操作系統交互的函數,例如創建、移動和刪除文件和目錄,以及訪問環境變量等。 sys 模塊:sys 模塊提供…

AI大模型:(二)4.1 文生圖(Text-to-Image)模型發展史

目錄 1.介紹 2.發展歷史 2.1.早期探索階段(1980-2014 年) 2.1.1.卷積神經網絡(CNN) 2.1.2.生成對抗網絡(GAN)的提出 2.2.GAN主導時代(2015-2018 年) 2.2.1.高分辨率GAN的突破 2.2.2.文本-圖像對齊的改進 2.3. Diffusion革命(2021–2022) 2.3.1.擴散模型(D…

vue3實現輪播渲染多張圖每張進行放大縮小拖拽功能互不影響

vue3實現輪播渲染多張圖每張進行放大縮小拖拽功能互不影響 1.以vue3中el-carousel輪播插件為例 <div class"pic_view"><el-carousel height"100vh" :autoplay"false" ref"carouselRef" change"handleCarouselChange&qu…

traceroute 使用說明

1、概述 Traceroute&#xff08;Windows 系統中為 tracert&#xff09;是一種網絡診斷工具&#xff0c;用于跟蹤數據包從本地設備到目標主機的傳輸路徑&#xff0c;并顯示沿途經過的每一跳&#xff08;路由器&#xff09;的延遲和 IP 地址。它通過發送不同 TTL&#xff08;生存…

用idea操作git緩存區回退、本地庫回退、遠程庫回退

前言 使用idea軟件操作git非常人性化和方便。 但是如果我的代碼使用git提交之后,我想回到以前的版本,此時需要進行git的版本回退。 提交代碼分為提交到緩存區、本地庫、遠程庫這3個過程。 下面我將介紹每個階段的提交對應的回退方法。 本篇文章是掌握git和使用idea操作git…

webpack+vite前端構建工具 - 3webpack處理js

3 webpack處理js webpack的核心——處理js文件&#xff0c;將模塊化的代碼打包。具體操作如下 es6轉化&#xff08;為兼容老瀏覽器&#xff0c;將es6轉化為es5&#xff09; babel-loader 代碼規范&#xff08;例如空格&#xff0c;縮進等代碼風格規范&#xff09; eslint 代碼…

Nginx轉發中相對路徑資源302問題的分析與解決

Nginx轉發中相對路徑資源302問題的分析與解決 典型案例&#xff1a;后端頁面引入./test.css的302問題 問題場景 假設我們有一個后端服務&#xff0c;其頁面中通過相對路徑引入了CSS文件&#xff1a; <!-- 后端頁面代碼 --> <link rel"stylesheet" href&…

Vue3 + TypeScript合并兩個列表到目標列表,并且進行排序,數組合并、集合合并、列表合并、list合并

在Vue 3 TypeScript中合并并排序兩個列表&#xff0c;可以通過以下步驟實現&#xff1a; 解決方案代碼 vue 復制 下載 <script setup lang"ts"> import { ref, computed } from vue;// 定義列表項類型 interface ListItem {id: number;name: string;valu…

Python-教程

1 需求 2 接口 3 示例 4 參考資料 Python 教程 — Python 3.13.5 文檔

Excel數據導出小記

文章目錄 前言一、DataTable >EXCEL二、DBReader >Excel &#xff08;NPOI&#xff09;三、分頁查詢 DbReader>Excel (MiniExcel)總結&#xff1a; 前言 最近經歷了一次數據量比較大的導出&#xff0c;也做了各種優化嘗試&#xff0c;這里稍記錄一下 一、DataTable …

深入理解鏈表數據結構:從Java LinkedList到自定義實現

引言 鏈表作為基礎數據結構之一&#xff0c;在Java集合框架中以LinkedList的形式提供。本文將深入分析Java原生LinkedList的實現機制&#xff0c;并介紹我自定義實現的MyLinkedList&#xff0c;最后對比兩者的設計差異與實現特點。 Java原生LinkedList解析 基本結構 Java的…

【深度學習】卷積神經網絡(CNN):計算機視覺的革命性引擎

卷積神經網絡&#xff08;CNN&#xff09;&#xff1a;計算機視覺的革命性引擎 一、算法背景&#xff1a;視覺智能的進化之路1.1 傳統視覺處理的困境1.2 神經科學的啟示 二、算法理論&#xff1a;CNN的核心架構2.1 基礎組成單元卷積層&#xff1a;特征提取引擎池化層&#xff1…

使用@SpringJUnitConfig注解開發遇到的空指針問題

Spring測試中的版本陷阱&#xff1a;SpringJUnitConfig與JUnit版本兼容性深度解析 一個看似簡單的空指針異常&#xff0c;背后可能隱藏著JUnit版本不匹配的“幽靈”。 一、SpringJUnitConfig&#xff1a;Spring與JUnit 5的橋梁 SpringJUnitConfig是Spring TestContext框架為**…

[2025CVPR]AdcSR:一種高效實世界圖像超分辨率的對抗擴散壓縮方法

目錄 1. 背景與挑戰 2. AdcSR模型概述 2.1 模型架構 2.2 訓練策略 3. 公式與原理 4. 創新點 5. 實驗與結果 5.1 實驗設置 5.2 結果對比 5.3 消融實驗 6. 結論 在計算機視覺領域&#xff0c;圖像超分辨率&#xff08;Image Super-Resolution, ISR&#xff09;一直是一…