本人在window7 64位操作系统下,使用vs2010,编译一个程序,工程是release版64位。编译没有错误,但是在连接redis.lib 是发生连接错误。(说明:redis是2.6版本的) 这是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