最近研究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 ...