windows上使用VS2012 C++语言调用Redis的解决方案

最近我在VS2012上进行Redis开发遇到一些困扰. 编译Redis的lib库没问题。但是使用这些lib库就不太顺利了. 在网上查来查去也没解决。不过其实Redis的客户端项目RedisCli.vcxproj,就是一个最好的使用例子. 我把几个需要注意的地方贴出来


注意事项1. 链接器->输入->忽略所有默认库: 应该设置为"否"  

这里不能选择"是 (/NODEFAULTLIB)" 否则会产生如下错误(这只是其中的一部分)

1>win32fixes.obj : error LNK2019: 无法解析的外部符号 ___report_rangecheckfailure,该符号在函数 _wsa_strerror 中被引用
1>hiredis.lib(hiredis.obj) : error LNK2001: 无法解析的外部符号 ___report_rangecheckfailure
1>win32fixes.obj : error LNK2019: 无法解析的外部符号 __beginthreadex,该符号在函数 _pthread_create 中被引用
1>win32fixes.obj : error LNK2019: 无法解析的外部符号 __endthreadex,该符号在函数 _win32_proxy_threadproc@4 中被引用
1>win32fixes.obj : error LNK2019: 无法解析的外部符号 __cwait,该符号在函数 _wait3 中被引用
1>win32fixes.obj : error LNK2019: 无法解析的外部符号 __errno,该符号在函数 _replace_ftruncate 中被引用

注意事项2: 你的工程文件需要引入win32fixes.c.

如果没有引入win32fixes.c.则会产生如下错误.

1>hiredis.lib(hiredis.obj) : error LNK2019: 无法解析的外部符号 _strerror_r,该符号在函数 ___redisSetError 中被引用
1>hiredis.lib(net.obj) : error LNK2001: 无法解析的外部符号 _strerror_r
1>hiredis.lib(net.obj) : error LNK2019: 无法解析的外部符号 _replace_setsockopt,该符号在函数 _redisContextSetTimeout 中被引用
1>D:\work\MOM\RedisTest\Debug\Test.exe : fatal error LNK1120: 2 个无法解析的外部命令

注意事项3:如果你的项目使用了预编译头,那么win32fixes.c也需要添加预编译头include "stdafx.h".

有可能还会遇到变量和函数重定义的问题. 比如sleep函数.BOOLEAN类型等。最好单独的把Redis封装成一个类库使用.独立在exe项目之外.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值