hiredis windows静态库编译

 

Hiredis是Redis官方推出的一个用于连接redis数据库的极简C库

GitHub地址:https://github.com/redis/hiredis ,测试用的 版本是v1.0.0

redis和hiredis,官方并没有提供windows版本,在GitHub的说明中也没有windows平台下使用的相关的介绍

 

编译过程

1> githib下载v1.0.0版本 地址:https://github.com/redis/hiredis/tree/v1.0.0

2>vs创建静态库工程,添加hiredis目录下*.c *.h文件到vs工程,编译工程

 

问题列表

1.编译问题,sds.h文件编译报错,在预编译定义中添加inline=_inline 

 

 2.openssl库依赖,hiredis支持建立ssl协议的安全连接,需要OpenSSL依赖库,在此也可以跳过此功能,在vs工程中移除ssl.c,不编译即可

 

 3.hiredis.c文件中"%zu" 修改为 "%lu",vs 不支持%zu size_t 格式化输出

 

4.hiredis.c文件中 cmd = hi_malloc(totlen+1); 申请的内存块会被下面的for循环写越界,导致内存溢出,在函数外层,释放cmd内存的时候崩溃掉,
修改方案为"cmd = hi_malloc(totlen+1+argc*3);"

 

/* Build the command at protocol level */
    cmd = hi_malloc(totlen+1);
    if (cmd == NULL)
        return -1;

    pos = sprintf(cmd,"*%d\r\n",argc);
    for (j = 0; j < argc; j++) {
        len = argvlen ? argvlen[j] : strlen(argv[j]);
        pos += sprintf(cmd+pos,"$%zu\r\n",len);
        memcpy(cmd+pos,argv[j],len);
        pos += len;
        cmd[pos++] = '\r';
        cmd[pos++] = '\n';
    }
    assert(pos == totlen);
    cmd[pos] = '\0';

工程代码下载地址: https://download.csdn.net/download/wj_jay2010/13113006

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值