Window7 64位环境下搭建redis开发环境(踩坑)

本机环境:
操作系统版本:windows 7 64位
编译器:vs 2013
redis官网并不提供windows版本,但是微软的技术开源组在开发维护一个windows x64版本的redis源代码
链接地址:https://github.com/MSOpenTech/redis

项目工程如图
Window7 64位环境下搭建redis开发环境(踩坑)_第1张图片

编译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.Window7 64位环境下搭建redis开发环境(踩坑)_第2张图片
一堆error LNK2005:XX函数已经定义
问题原因:

Window7 64位环境下搭建redis开发环境(踩坑)_第3张图片
Window7 64位环境下搭建redis开发环境(踩坑)_第4张图片
强烈注意:
调用者的运行库一定要和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个库重复,然后在项目中忽略一个
Window7 64位环境下搭建redis开发环境(踩坑)_第5张图片

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这两个类到底是怎么玩的,客户的项目报错最多的地方就是在这两个文件上.

你可能感兴趣的:(redis,windows,搭建环境,7,win7-64位,redis-编译)