<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # windows下C++編譯配置hiredis的方法(VS2017) 2018年03月](https://me.csdn.net/weixin_39684284) https://blog.csdn.net/weixin\_39684284/article/details/79571254 * * [前言](https://blog.csdn.net/weixin_39684284/article/details/79571254#前言) * [開始](https://blog.csdn.net/weixin_39684284/article/details/79571254#開始) * [環境說明](https://blog.csdn.net/weixin_39684284/article/details/79571254#環境說明) * [開始配置](https://blog.csdn.net/weixin_39684284/article/details/79571254#開始配置) * [Redis編譯安裝](https://blog.csdn.net/weixin_39684284/article/details/79571254#redis編譯安裝) * [hiredis的編譯配置](https://blog.csdn.net/weixin_39684284/article/details/79571254#hiredis的編譯配置) * [程序樣例](https://blog.csdn.net/weixin_39684284/article/details/79571254#程序樣例) ## 前言 最近在學習redis的使用,以及在windows下通過C++連接redis服務器進行操作。在參考了幾篇博客,又自己處理許多編譯錯誤的問題,終于將hiredis客戶端配置成功了,特此記錄,方便查看。 ## 開始 ### 環境說明 編譯器:Visual Studio 2017; redis客戶端:[github上hiredis的windows版](https://github.com/MicrosoftArchive/redis) 版本:直接點擊下載[win3.2.100](https://github.com/MicrosoftArchive/redis/archive/win-3.2.100.zip) > 在這塊需要說明的是,我使用的是3.2.100版本的hiredis客戶端,對于其他版本的,沒有嘗試,不過感覺大致思路應該是一致的 ### 開始配置 > 這里主要講述從redis的編譯安裝到使用hiredis進行C++程序的過程,如果只需要hiredis的配置使用,可略過redis的編譯部分 #### Redis編譯安裝 > 以下是Redis的編譯安裝,如果感覺麻煩的話,可以直接下載redis的windows安裝包進行安裝:地址:[Redis-x64-3.2.100.msi](https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.msi) > 如果上述地址無法下載可以選擇這個:[Redis-x64-3.2.100.msi](https://download.csdn.net/download/weixin_39684284/10288873) * 解壓下載下來的`win-3.2.100.zip`,進入到目錄`redis-win-3.2.100\msvs\`中,打開`RedisServer.sln` > 第一次打開的時候VS2017會檢測解決方案工具集,提示升級,點擊確定即可,將工具集升級到最新或者下載對于的v120工具集 > ![檢測工具集](https://img-blog.csdn.net/20180315162304123?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTY4NDI4NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) * 在解決方案資源管理右鍵解決方案,點擊生成。 > 需要注意的是,要注意編譯設置是debug還是release,是x86還是x64。使用debug編譯在出錯的時候好調試一些。我選擇的是debug x64的編譯配置。此時會出現一系列的警告之類的,不用管,等待完成編譯完成就可以了。出現錯誤就解決。不過3.2.100版本在VS2017下,應該是能夠順利生成的(可能是我運氣好?) * 經過一系列的警告,最終在目錄`redis-win-3.2.100\msvs\x64\Debug`里面生成了一些靜態庫文件和exe文件 > EXE文件 分別是redis-benchmark.exe,redis-check-aof.exe,redis-check-dump.exe,redis-cli.exe,redis-server.exe;把5個EXE復制到自己新建redis的目錄下即可,它們的作用如下: > redis-server:Redis服務器的daemon啟動程序 > redis-cli:Redis命令行操作工具。也可以用telnet根據其純文本協議來操作 > redis-benchmark:Redis性能測試工具,測試Redis在當前系統下的讀寫性能 > redis-check-aof:數據修復 > redis-check-dump:檢查導出工具 > *來源:[https://www.cnblogs.com/raker/p/4368741.html](https://www.cnblogs.com/raker/p/4368741.html)* * 在命令行界面找到redis的目錄,運行redis-server.exe開啟服務。redis-cli.exe連接服務。詳細命令可以查看[redis命令中心](https://redis.io/topics/rediscli) #### hiredis的編譯配置 * 在Redis的編譯安裝中,我們編譯redis服務的時候,已經編譯了hiredis。當然也可以自行重新編譯hiredis,只需要右鍵`hiredis`工程和`Win32_Interop`工程,分別點擊生成`hiredis.lib`和`Win32_Interop.lib`即可。 * 在`\redis-win-3.2.100\msvs\x64\Debug`目錄中可以看到兩個靜態鏈接庫文件:`**hiredis.lib`和`Win32_Interop.lib**`, 至此,我們需要的文件和鏈接庫都有了,接下來就是怎么配置使用的問題了。 ** * 新建一個項目,打開【項目屬性】對話框,選擇【VC++目錄】,在【包含目錄】中增加我們下載下來的源碼的頭文件存放的位置,相對路徑為:`redis-win-3.2.100\src` 和 `\redis-win-3.2.100\deps\hiredis`。這兩個文件夾里包含了hiredis需要使用的頭文件和c文件。 * 在【庫目錄】中選擇我們靜態鏈接庫存放的位置`\redis-win-3.2.100\msvs\x64\Debug` > 注意,上面的路徑都是相對路徑,在操作過程中,需要通過文件選擇對話框完成路徑的增加,為絕對路徑。這些文件路徑是可以改變的,只要文件夾里包含的文件沒變即可。可以將這些頭文件放在一個目錄中統一包含也行。 * 在【鏈接器】>>【輸入】中,選擇【附加依賴項】,在其中增加之前編譯的鏈接庫文件`**hiredis.lib`,`Win32_Interop.lib**`,用回車來分割即可。 * 至此,hiredis的配置就算完成了,可以輸入下面的樣例運行一下。 > 需要了解的是,一些教程中說到,還需要將`redis-win-3.2.100\src\Win32_Interop`目錄下的`win32fixes.c` 放入項目的目錄與main.cpp同級,經過測試后發現,其實不放入也不影響使用,如果出現相關問題,可以嘗試將該文件放入項目目錄中。 #### 程序樣例 ~~~ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <hiredis.h> //頭文件跟隨文件存放路徑改變 #include <Win32_Interop\win32fixes.h> //頭文件跟隨文件存放路徑改變 #pragma comment(lib,"hiredis.lib") #pragma comment(lib,"Win32_Interop.lib") int main() { redisContext *redis = redisConnect("127.0.0.1", 6379); if (redis == NULL || redis->err) { if (redis) { printf("Error: %s\n", redis->errstr); // handle error } else { printf("Can't allocate redis context\n"); } } else { printf("connect successed!"); } redisReply *reply; /* PING server */ reply = (redisReply *)redisCommand(redis, "PING"); printf("PING: %s\n", reply->str); freeReplyObject(reply); reply = (redisReply *)redisCommand(redis, "SET %b %b", "foo", (size_t)3, "ss", (size_t)2); printf("foo: %s\n", reply->str); freeReplyObject(reply); redisFree(redis); system("pause"); return 0; } ~~~ ``` redisContext *redis = redisConnect("127.0.0.1", 6379); if (redis == NULL || redis->err) { if (redis) { printf("Error: %s\n", redis->errstr); // handle error } else { printf("Can't allocate redis context\n"); } } else { printf("connect successed!"); } redisReply *reply; /* PING server */ reply = (redisReply *)redisCommand(redis, "PING"); printf("PING: %s\n", reply->str); freeReplyObject(reply); reply = (redisReply *)redisCommand(redis, "SET %b %b", "foo", (size_t)3, "ss", (size_t)2); printf("foo: %s\n", reply->str); freeReplyObject(reply); redisFree(redis); system("pause"); ``` *如果有什么疑問,可以留言與我溝通~~~~* * * * 如果遇到與庫沖突的問題,可以在右擊項目->屬性->配置屬性->連接器->命令行中輸入/NODEFAULTLIB:libcmt.lib 如果遇到 error C4996,各種unsafe報錯啊,請右擊項目->屬性->配置屬性->C/C++->預處理器->預處理器定義->添加“\_CRT\_SECURE\_NO\_WARNINGS”(不帶引號) *來源:[https://www.cnblogs.com/raker/p/4368741.html](https://www.cnblogs.com/raker/p/4368741.html)*
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看