您的位置:首页 > 数据库 > Redis

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这两个类到底是怎么玩的,客户的项目报错最多的地方就是在这两个文件上.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: