Window7 64位环境下搭建redis开发环境(踩坑)
2016-01-27 14:58
826 查看
本机环境:
操作系统版本:windows 7 64位
编译器:vs 2013
redis官网并不提供windows版本,但是微软的技术开源组在开发维护一个windows x64版本的redis源代码
链接地址:https://github.com/MSOpenTech/redis
项目工程如图
编译hiredis得到hiredis.lib库,使用redis数据库的主要东东,重视起来.
编译Win32_Interop得到Win32_Interop.lib库,这个库的作用是:目前还没搞清楚
在自己的项目中加上”附加包含目录”“附加库目录”
附加库目录:就是hiredis.lib和Win32_Interop.lib文件所在的路径.
记录下我编译过程中遇到的错误
1.error C4996: ‘sscanf’: This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
解决办法:
在C/C++ - 预处理器-预处理器定义
添加_CRT_SECURE_NO_WARNINGS
2.
一堆error LNK2005:XX函数已经定义
问题原因:
强烈注意:
调用者的运行库一定要和hiredis以及Win32_Interop库的运行库设置,保持一致.
否则就会报错.
运行库有:
多线程/MT,
多线程调试/MTd,
多线程DLL/MD,
多线程调试DLL/MDd
之间有什么区别呢?做技术要知其然,还要知其所以然.
带d的是调试,不带就是release
MT是连接到静态库,MD则是连接到DLL
MT就是说生成的可执行文件可以在没有运行库的机器上运行,如果是用MD则生成的可执行文件必需VC运行库——msvcrt.dll msvcrXX.dll等,其中XX代表运行库版本。
此处我编译的是debug 的 lib静态库版本,所以三个工程的设置选的是多线程调试/MTd.
3.LNK2005 一般是库重复了,先找到哪2个库重复,然后在项目中忽略一个
如
4.在搭建环境的过程中,出错是正常的,细心点耐心点
去好好看下hiredis以及Win32_Interop项目的属性设置界面中是怎么设置的
比如
Win32_Interop项目的预处理定义
USE_STATIC
USE_JEMALLOC
_OFF_T_DEFINED
WIN32
NDEBUG
_LIB
%(PreprocessorDefinitions)
LACKS_STDLIB_H
_CRT_SECURE_NO_WARNINGS
PSAPI_VERSION=1
_WIN32_WINNT=0x0501
hiredis项目预处理定义
_OFF_T_DEFINED 此宏来控制_off_t的定义 爬了很多坑啊
WIN32
_LIB
_DEBUG
下一个阶段通读下代码
起码搞清楚win32_FDAPI.h和WS2tcpip.h这两个类到底是怎么玩的,客户的项目报错最多的地方就是在这两个文件上.
操作系统版本:windows 7 64位
编译器:vs 2013
redis官网并不提供windows版本,但是微软的技术开源组在开发维护一个windows x64版本的redis源代码
链接地址:https://github.com/MSOpenTech/redis
项目工程如图
编译hiredis得到hiredis.lib库,使用redis数据库的主要东东,重视起来.
编译Win32_Interop得到Win32_Interop.lib库,这个库的作用是:目前还没搞清楚
在自己的项目中加上”附加包含目录”“附加库目录”
附加库目录:就是hiredis.lib和Win32_Interop.lib文件所在的路径.
记录下我编译过程中遇到的错误
1.error C4996: ‘sscanf’: This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
解决办法:
在C/C++ - 预处理器-预处理器定义
添加_CRT_SECURE_NO_WARNINGS
2.
一堆error LNK2005:XX函数已经定义
问题原因:
强烈注意:
调用者的运行库一定要和hiredis以及Win32_Interop库的运行库设置,保持一致.
否则就会报错.
运行库有:
多线程/MT,
多线程调试/MTd,
多线程DLL/MD,
多线程调试DLL/MDd
之间有什么区别呢?做技术要知其然,还要知其所以然.
带d的是调试,不带就是release
MT是连接到静态库,MD则是连接到DLL
MT就是说生成的可执行文件可以在没有运行库的机器上运行,如果是用MD则生成的可执行文件必需VC运行库——msvcrt.dll msvcrXX.dll等,其中XX代表运行库版本。
此处我编译的是debug 的 lib静态库版本,所以三个工程的设置选的是多线程调试/MTd.
3.LNK2005 一般是库重复了,先找到哪2个库重复,然后在项目中忽略一个
如
4.在搭建环境的过程中,出错是正常的,细心点耐心点
去好好看下hiredis以及Win32_Interop项目的属性设置界面中是怎么设置的
比如
Win32_Interop项目的预处理定义
USE_STATIC
USE_JEMALLOC
_OFF_T_DEFINED
WIN32
NDEBUG
_LIB
%(PreprocessorDefinitions)
LACKS_STDLIB_H
_CRT_SECURE_NO_WARNINGS
PSAPI_VERSION=1
_WIN32_WINNT=0x0501
hiredis项目预处理定义
_OFF_T_DEFINED 此宏来控制_off_t的定义 爬了很多坑啊
WIN32
_LIB
_DEBUG
下一个阶段通读下代码
起码搞清楚win32_FDAPI.h和WS2tcpip.h这两个类到底是怎么玩的,客户的项目报错最多的地方就是在这两个文件上.
相关文章推荐
- windows下安装php5.5的redis扩展
- Redis 安装
- springmvc+mybatis+redis
- Redis常用命令
- Mongodb 和Redis 的相同点和不同点
- Mac系统上安装redis服务
- 数据缓存---Spring Redis Cache 缓存
- scala实现读取redis
- python-从redis数据库中读数据
- PHP扩展redis使用手册
- Java连接Vmware中的redis
- Redis安装部署
- Linux下安装Redis并设置相关服务
- Yii2.0使用Redis使用技巧缓存
- redis 替代php文件存储session
- 关于Redis持久化
- redis的数据类型
- Redis的学习与使用
- redis的简单安装配置
- spring整合redis客户端及缓存接口设计(转)