天天看點

windows下hiredis的編譯



windows下hiredis的編譯,有需要的朋友可以參考下。

果然,高端的程式員真心是鳥都不鳥windows的,redis的用戶端找了一圈愣是沒有C++的windows版本

我要做個windows上的C++的伺服器都沒辦法和redis互動

github上所有能試的我都試過了,要麼是隻支援unix,要麼是怎麼編譯都不通過,焦頭爛額中

然後我總結了網上無數的教程,附帶修複一個個編譯錯誤,總結如下

編譯環境,64位windows7 ultimate,VS2013 Ultimate

1.擷取redis windows版

<a href="http://msopentech.com/">MS Open Technologies 官方首頁</a>

<a href="https://github.com/MSOpenTech/redis">GitHub上的MSOpenTech/redis項目位址</a>

2.編譯兩個lib: hiredis.lib和Win32_Interop.lib

打開從GitHub上clone下來的檔案夾,打開裡面的msvs檔案夾中的RedisServer.sln

從解決方案資料總管視窗編譯hiredis工程和Win32_Interop工程(調試的時候請在debug模式下編譯這兩個庫),此時便會在Debug/Release檔案夾下生成這兩個工程編譯的lib

3.在自己的工程中使用

(1)添加上一步編譯的這兩個lib到工程中

(2)複制GItHub redis項目檔案夾中src/Win32_Interop下所有頭檔案

(3)以及deps/hiredis下所有頭檔案(其中fmacros.h用src檔案夾下的fmacros.h檔案替代)

(4)再複制src/Win32_Interop/win32fixes.c到自己的工程目錄,包含到工程檔案中

(5)調整各個檔案include的路徑

(6)示例代碼

PS.可能會碰到的編譯錯誤

1.必須定義入口點,請在win32fixes.h之前加上#define NO_QFORKIMPL

2.各種與其他庫的使用沖突,請右擊項目-&gt;屬性-&gt;配置屬性-&gt;C/C++-&gt;代碼生成-&gt;運作庫-&gt;改成多線程調試(/MTd)或多線程(/MT)

并且在右擊項目-&gt;屬性-&gt;配置屬性-&gt;連接配接器-&gt;指令行中輸入/NODEFAULTLIB:libcmt.lib

3.error C4996,各種unsafe報錯啊,請右擊項目-&gt;屬性-&gt;配置屬性-&gt;C/C++-&gt;預處理器-&gt;預處理器定義-&gt;添加“_CRT_SECURE_NO_WARNINGS”(不帶引号)