Windows下使用hiredis的坑
1、Windows VS下编译hiRedis源码就不细说了,要注意一点的是后面项目使用库的时候,项目属性中代码生成的运行库的设置要跟库编译的时候设置的一致,如下图:
2、Win32_Interop.lib的冲突
Win32_Interop.lib和ws2_32.lib、wsock32.lib会有冲突,编译的时候会出现类似如下的错误,(LNK2005:htons已经在Win32_Interop.lib(Win32_FDAPI.obj)中定义)出现这样的原因是因为项目中已经使用了ws2_32.lib、wsock32.lib,htons在其中有定义,所以这几个库无法同同时使用。后面会介绍如何解决这个问题。
解决思路
由于使用Win32_Interop.lib和ws2_32.lib都是用静态库的链接,所以这样的错误基本没法解决,我们只能把hiredis库再进行一次封装,封装成动态库,重新定义接口出来,就能避免错误。
hiredis接口封装
根据项目需求,我们只要封装我们需要用到的接口。
//连接redis服务器、参数服务器IP和认证
int RedisConnect(const char *RedisIP, const char *auth);
//推送消息到通道
int RedisPublish(const char *channel, const char *msg);
//往指定键值设置内容和超时时间
int RedisSet(const char *key, const char *value, int timeout);
//从指定键值获取消息
int RedisGet(const char *key, string &str);
//断开redis连接
void RedisFree(void);
我根据需要值封装了以上几个接口,有需求再继续添加接口即可。
调用实例
#include "Redis.h"
#pragma comment(lib, "redisdll.lib")
int main()
{
RedisConnect("127.0.0.1", "AUTH xmgps");
string str;
RedisSet("media", "abcd", 10);
RedisFree();
return 0;
}
下载
下载链接:https://download.csdn.net/download/qq_22633333/11996124