本人在window7 64位操作系统下,使用vs2010,编译一个程序,工程是release版64位。编译没有错误,但是在连接redis.lib 是发生连接错误。(说明:redis是2.6版本的)
这是redis的编译lib的工程。其中包括连接lib的运行是库等配置都是没有问题的。原因是本人以前在window 32 位编译 32位工程,没有问题。现在把连接报错贴出来
这是redis的编译lib的工程。其中包括连接lib的运行是库等配置都是没有问题的。原因是本人以前在window 32 位编译 32位工程,没有问题。现在把连接报错贴出来
1>-- 已启动生成: 项目: test, 配置: Debug Win32 -- 1>LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library 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>C:\Users\Administrator\Desktop\test\Debug\test.exe : fatal error LNK1120: 2 个无法解析的外部命令 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
代码更简单:
#include "stdafx.h"
#include "hiredis.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
struct timeval tv;
int timeout=1000;
tv.tv_sec = timeout / 1000;
tv.tv_usec = timeout % 1000;
redisContext *m_pContext = redisConnectWithTimeout("127.0.0.1",6379,tv);
if( NULL == m_pContext || m_pContext->err)
{
if( NULL != m_pContext)
{
cout<<"redisClient connection error:" << m_pContext->errstr<<" ;errcode : "<< m_pContext->err;
redisFree(m_pContext);
m_pContext = NULL;
}
return -1;
}
//redisSetTimeout(m_pContext, tv);
return 0;
}
求高手解决!
解决方案
40
你认为是 release ,但你贴出来的内容第一行就写明是 debug