關於hiredis庫能否在windows系統下編譯

2021-10-13 10:01:51 字數 2384 閱讀 2516

最近研究redis,在win32平台下的redis。

查閱了大量文章。

100%的文章都告訴我在windows平台(win32)下不能用hiredis。

我就怕了。

於是乎自己用socket根據redis協議寫了乙個redis鏈結庫。

正常使用確實沒問題。但由於redis協議的特點,tcp沒辦法知道redis服務端發過來的資料報文的長度,沒有報頭。

遇到網路狀況不好時候,會造成接收資料不全,資料丟失,這問題就大了。

偶然間,我開啟了hiredis的源**。

看了一看hiredis裡面的cmakelists.txt檔案。

發現了這樣一段

我看見了win32

這特麼hiredis明明是跨平台的,為什麼都告訴我只能linux?

我感覺被坑了。

嘗試編譯,配置好編譯器,然後正常cmake,然後make,然後make install

目標資料夾下發現了編譯好的動態鏈結庫。

放到qt裡面測試一下。

先在pro檔案裡面新增頭檔案目錄和動態鏈結庫。

("china_新增**").

toutf8()

;qdebug()

<< key1;

redisreply * reply =

(redisreply*

)rediscommand

(redis,

"auth root");

cout << reply-

>str << endl;

redisreply * reply1 =

(redisreply*

)rediscommand

(redis,

qstring

("hgetall "

+key1)

.tostdstring()

.c_str()

);if(redis-

>err)

else

}return a.

exec()

;}為什麼用qt呢,因為我的redis裡面鍵名存在中文,用qt處理utf-8編碼方便一些。

測試成功。

以後誰在跟我說hiredis不能在windows下用,就一巴掌拍過去。

1、hiredis的cmakelists.txt檔案cmake_minimum_required之前加上:

set

(cmake_c_compiler "gcc"

)set

(cmake_cxx_compiler "g++"

)set

(cmake_cxx_flags "-fexec-charset=gbk -finput-charset=utf-8"

)

用來指定編譯器和字符集

2、cmake命令列引數

cmake .

-g "mingw makefiles"

-d "cmake_make_program:path=make.exe的絕對位址"

-b .

/build/release

-b後面為cmake編譯後存放的位置。

然後進到這個位置

make

make install

預設install的位置是系統盤內program files(x86)資料夾的hiredis內,翻一下就能看見了。

關於batik庫在Maven中版本問題

最近在使用highcharts進行圖示統計分析的時候,客戶要求對生成的統計結果圖可以匯出到excel檢視。batik batik transcoder 1.6 1 利用batik的jar包,轉換svg需要生成的型別,生成輸出流,寫入excel。eclipse下編譯執行,貌似一切順利。程式測試通過後,...

關於在虛擬機器上使用boost庫

今天終於搞清楚了為什麼在虛擬機器上進行vs c 開發,不能進行除錯。將這條彎路寫在這裡,希望對大家有所幫助。我的虛擬機器使用有點怪異,我將本地磁碟上的乙個目錄設定為虛擬機器上的乙個網路硬碟,其目的是在只在虛擬機器上執行開發環境,將程式檔案儲存在本地磁碟上。這樣做,如果是開發一般程式,似乎一切正常,當...

關於在MFC工程中呼叫MFC常規動態庫

使用mfc常規型動態鏈結庫 1 將生成的動態鏈結庫檔案 regudll.dll 和庫檔案 regudll.lib 拷貝到要呼叫的工程dlltest的目錄下,再將 regudll.lib 檔案加入到呼叫工程dlltest中.2 在呼叫工程testdlg.h中加入如下 宣告動態鏈結庫函式 define ...