获取redis windows版
编译hiredis
1.解压redis,打开源码目录中msvs目录中的sln文件
2.redis服务器安装好的前提下,只需要编译下面两个项目即可
在此要注意一点,就是32位64位选择,32位使用需要编译32位版本,64位同样。也可两个版本都编译备用。
3.编译完成之后需要对库头文件进行整理,在这里我专门建立了一个文件夹整理头文件(按照自己喜欢的方式整理即可)
引用库文件需要源码中src/Win32_Interop下所有头文件和deps/hiredis下所有头文件(其中fmacros.h用src文件夹下的fmacros.h文件替代),我整理如下所示
使用时直接引用include到项目中即可,注意检查头文件中的包含关系。
在工程中使用hiredis
创建工程之后
1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。
2.添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
3.然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名
即可成功调用hiredis,示例代码
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hiredis/hiredis.h>
#include <interop/win32fixes.h>
int main()
{
unsigned int j;
redisContext *c;
redisReply *reply;
struct timeval timeout = { 1, 500000 };
c = redisConnectWithTimeout((char *)"212.64.10.124", 6379, timeout);
if (c->err)
{
printf("Connection error:%s\n", c->errstr);
exit(1);
}
//ping
reply = (redisReply *)redisCommand(c, "PING");
printf("PING: %s\n", reply->str);
freeReplyObject(reply);
return 0;
}
运行结果如下
遇到的错误
是因为redis在Posix体系下,off_t被定义成64位,而在windows下被sys\types.h文件定义成32位。在工程属性里定义_OFF_T_DEFINED 即可