vs2019搭建redis客户端的c++开发环境

简介

一、找到要使用的开源库

为了测试在VS2019下用c++开发的客户端代码,可以选择一款官方推荐的c++客户端开源库。

先去官方的客户端主页看看:https://redis.io/clients#c-plus-plus

看到如下信息:

image-20201216142619580

找到c++客户端中看看有没有这个标志的。

image-20201216142900164

找到唯一一个:redis-plus-plus

点那个树杈形状的链接,浏览到redis-plus-plusgithub主页,看到这个:

image-20201216143435918

要求hiredis v0.12.1以上的版本,推荐最终发布的稳定版。

要先搞定hiredisvs2019的编译!

之前Windows搭建redis服务器的时候(参见文章搭建windows下redis哨兵模式搭建windows下简易的redis集群环境),留意过Redis-x64-5.0.10 for Windows版本,上面是有源码的,里面也包含了hiredis

源码的下载地址是:https://github.com/tporadowski/redis/releases

image-20201216144720658

Redis-x64-5.0.10 for Windowsredis-plus-plus都下载下来。

image-20201216150350141

二、VS2019编译hiredis

新建目录win_redisredis-5.0.10.zip解压到目录中。

image-20201216145525037

里面的msvc目录直接有vs的sln文件,用vs2019打开这个解决方案文件。

image-20201216145801850

我们目的是只想编译hiredis,得到库文件。可执行文件redis-server.exeredis-cli.exe直接下载Redis-x64-5.0.10.zip就有了,可以不编译。

而且打开hiredis.h文件,看到版本号是0.13,满足redis-plus-plus要求的hiredis v0.12.1以上的版本。

干脆把整个工程都编译一下吧!

编译过程问题解决:(如果只编译hiredis库则不会有问题)

  • 编译问题1
    \win_redis\redis-5.0.10\src\release.c(44,10): fatal error C1083: 无法打开包括文件: “release.h”: No such file or directory

解决:参考redis-3.0.ziprelease.c,改一下源代码:

在文件开头

#include <string.h>

#include "release.h"
#include "version.h"
#include "crc64.h"

改为:

#ifdef _WIN32
#include "Win32_Interop/Win32_Portability.h"
#define REDIS_GIT_SHA1 "00000000"   /* TODO: Modify build to write them to release.h from the environment */
#define REDIS_GIT_DIRTY "0"
#define REDIS_BUILD_ID "0000"
#endif

#include <string.h>

POSIX_ONLY(#include "release.h")
#include "version.h"
#include "crc64.h"

重新编译项目,出现问题2。

  • 编译问题2

这个问题可以不管,编译已经成功了。

image-20201216151823309

如果要解决:关闭VS2019,右键菜单,然后用管理者模式打开VS2019,打开解决方案,编译通过。

或者设置一下:

image-20201216153219593

之后编译成功。

为了项目开发业务程序方便引用库,可以设置项目生成的库文件都输出到msvclib目录,exe文件都输出到msvcbin目录中。

libhiredis项目为例,设置是:

image-20201216162605889

exe项目以RedisServer项目设置为例,设置是:

image-20201216162806299

image-20201216162906762

重新编译成功,看到lib文件都输出到msvclib目录,exe文件都输出到msvcbin目录中

image-20201216163120842

image-20201216163823747

三、VS2019编译redis-plus-plus

redis-plus-plusCMAKE的项目,VS2019本来支持直接打开文件夹的方式编译CMAKE项目的,但是我试了这个项目,虽然可以直接编译出lib文件,但是没有产生VS2019的工程文件。

所以直接下载最新的CMAKE安装,然后配置、产生VS2019的项目文件,再用VS2019打开项目文件编译。

从https://cmake.org/download/下载CMAKE最新版本cmake-3.19.1-win64-x64.msi

安装时,加入到环境变量中,安装完成后,就可以操作redis-plus-plus

首先下载的redis-plus-plus-master.zip解压到win_redisdeps目录,和hiredis放到同一级别目录中,如下图。

启动CMAKE,操作这个目录。

如下图设置:

源文件目录选择deps中的redis-plus-plus-master目录;build目录选择在msvc中新建的redis-plus-plus-master目录;然后点击Configure按键,弹出的界面如下图配置。

Finish之后,出现错误提示,不管它,修改配置界面,如下图:

Debug;Release;MinSizeRel;RelWithDebInfo改为Debug;Release

然后点Configure按键,注意,每点击1次都会提示错误,但是界面都会有变化,错误之后再点击Configure按键,我是重复了7、8次之后,出现了如下的界面:

配置HIREDIS_HEADER、HIREDIS_STATIC_LIB,配置到上面编译好的hiredis的头文件和库文件夹中,SHARED库、TESTTLS都不勾选,然后再点Configure按键,如下图。

然后Generate按键生成VS项目。目录中能看到解决方案和项目文件了,如下图:

在之前编译hiredis的解决方案中,增加这个存在的redis-plus-plus-static.vcxproj项目,如下图:

VS2019中修改配置,因为CMAKE配置头文件和库的时候使用了绝对路径,可以修改成使用VS的环境变量,目录搬移时也可以兼容,如下图:

26

注意:这里运行库用MTd是因为,之前的编译hiredis的项目用了MT或者MTd的,所以要一致。

编译成功!

四、测试库

解决方案中新建项目redis++_demo,注意运行库设置也要是MTd或者MT的,头文件要包含hiredisredis-plus-plus的头文件,要连接库文件hiredis.libredis++.libWin32_Interop.lib

源代码如下:

#include <sw/redis++/redis++.h>
#include <iostream>
#include <cstdio>
#include <unordered_set>
#include <Windows.h>

using namespace sw::redis;

int main(int argc, char** argv)
{
	try {
		Redis redis = Redis("tcp://127.0.0.1:6379");

		redis.set("key", "Test redis-cplus-cplus");
		OptionalString val = redis.get("key"); 
		if (val) {
			std::cout << *val << std::endl;
		}
	}
	catch (const Error& e) {

	}
	return 0;
}

先执行redis-server.exe服务,端口使用默认的6379,编译这个程序并执行后,结果如下:

img

五、本文解决方案下载

win_redis.7z

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值