Windows下通过CMake编译hiredis及应用

news2024/9/24 21:27:18

1、 在下载的redis-6.2.12.tar.gz的压缩包中,解压后有个deps文件夹,里面有个hiredis文件夹,是我们访问redis的C接口,需要我们手动编译后才能使用。(redis: https://redis.io/download/)

2、打开CMake软件,我使用的版本是3.14.5,添加源代码路径:
添加源代码路径

3、设置构建路径,在源代码路径的同级文件下创建build文件夹,并在CMake上进行设置:
设置构建路径

4、 点击“Configure”进行编译器的配置,选择MinGW Makefiles,然后下面的选项中:第一个是默认选项“Use default native compilers”,如果电脑中装了多个编译器的话,最好手动配置编译器的版本,往往实际工程中有版本的要求或限制。
选择编译器

5、 下一步:找到gcc、g++编译器的路径:
C:/Program Files (x86)/mingw64/bin/gcc.exe
C:/Program Files (x86)/mingw64/bin/g++.exe
这一步要谨慎,特别是如果都装了32位和64位编译器的时候,需要保持一致。即我们这里使用的编译器版本与后面应用程序编译的版本要保持一致,我就出现了这里使用64位MinGW编译器,在程序里编译时使用的是32位MinGW编译器;出现问题时还一时半会没想到是这个问题!

6、 选择编译器后,如果没有问题的话就进入配置过程:
配置CMake

这里出现红色底色的选项,可以由我们进行配置和确认,在第一次编译的时候我没有注意到CMAKE_BUILD_TYPE这个选项,导致后面在使用库时出现问题。
参见链接: https://blog.csdn.net/yizhiniu_xuyw/article/details/120201559
简单来说:如果你要生成的是Debug版本,则填写:Debug;如果你要生成的是Release版本,则填写:Release;如果是要同时生成两个版本的就填写:RelWithDebInfo。但是这个我没有试过。
设置CMake_BUILD_TYPE

7、 按照提示,点击“Configure”;
Confiuring
8、 按照提示,点击“Generate”。

9、 到build文件夹下,打开windows shell :ctrl+shift+鼠标右键后:
打开Windows Shell

10、在控制台中:make,过几秒:当前目录下会出现库文件:
但是我出现了一个问题:read.c中的for循环初始声明只允许在C99模式中!
for循环中的声明错误
解决:在CMake时配置CMAKE“CMAKE_C_FLAGS”选项中填入-std=c99
CMAKE“CMAKE_C_FLAGS”选项中填入-std=c99
然后重新走一遍上面的步骤,最好编译成功:
生成的库
11、然后输入:make install,会在C:/Program Files (x86)/hiredis/目录下生成对应的库文件及头文件等。
在C盘下的路径

但是,我在参照博客链接: https://blog.csdn.net/qq78442761/article/details/103084824的例子时还是出现了一下问题!

问题1:bad reloc address 0x68 in section ‘.gcc_except_table’,比较怪异的问题,我查了半天,后来才想起来可能是编译器版本的问题!
解决:方法1:CMake在编译时换成mingw32的gcc、g++编译器,在步骤5;方法2:设置QtCreator 的构建中使用的MinGW编译器版本;我选择方法1,于是上面的步骤又重新走一遍!

地址错误

问题2:一开始我以为是虚函数表相关的问题,一看到vtable这个词就往那方向想。
解决:因为qt.h里面的RedisQtAdapter类,是继承了Qt的QObject并且有有Q_Object宏,因此,要放到项目中一起编译(添加qt.h到项目中),生成moc文件。

没有定义的RedisQtAdapter
最后:在运行本程序之前,先启动redis-server.exe使Redis服务端开启。最后成功运行:

运行成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

日本PSE认证日本的電気用品安全法METI备案

日本的電気用品安全法(PSE认证)法规要求日本的采购商在购进商品后一个月内必须向日本METI注册申报,并必须将采购商名称或ID标在产品上,以便在今后产品销售过程中进行监督管理,完成后将获得電気用品製造事業届出書&…

全球化背景下,如何利用内容营销促进跨境电商业务增长

随着全球跨境电商市场的迅速发展,越来越多的企业开始将注意力转向跨境电商。然而,随着竞争的激烈化,企业不再能够仅仅依靠产品本身来吸引消费者的注意。因此,内容营销成为了跨境电商企业在吸引、留住消费者方面的关键。在这篇文章…

【Spring】— Spring AOP

目录 一、Spring AOP简介1.什么是AOP2.AOP术语 二、AspectJ开发1.基于XML的声明式AspectJ1.1 配置切面1.2 配置切入点1.3 配置通知 2.基于注解的声明式AspectJ 一、Spring AOP简介 1.什么是AOP AOP的全称是Aspect-Oriented Programming,即面向切面编程(…

芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS

修饰性PEG芴甲氧羰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS是保护氨基的PEG衍生物之一 结构式: 芴甲氧羰酰基-氨基-聚乙二醇-巯基吡啶Fmoc-NH-PEG-OPSS聚乙二醇化可以提高聚乙二醇分子的稳定性,降低其免疫原性,仅用于科研实验。 FMOC-NH…

骨传导风靡蓝牙耳机市场 AI赋能有望打破行业技术桎梏

一、骨传导耳机行业概述 骨传导耳机是运用骨传导技术应用制造的耳机,听到的大部分声音都是声波经过空气到达骨膜振动进而将声音传入内耳,另一种方式是声波通过骨震动可以直接传至内耳。骨传导耳机可分为骨传导扬声器技术应用耳机、骨传导麦克风技术应用…

关于比较中设置极大值,常设置的0x3f3f3f3f

无穷大常量 int型变量的取值范围&#xff1a;[-2^31, 2^31 - 1] -> [-2147483648, 2147483647] 0x7fffffff 2147483647 (2^31 - 1) (1 << 31) - 1 0x3fffffff 1073741823 (2^30 - 1) (1 << 30) - 1 0x3f3f…

产品经理必读 | 俞军产品经理十二条军规

最近在学习《俞军产品方法论》&#xff0c;觉得俞军总结的十二条产品经理原则非常受用&#xff0c;分享给大家。 01. 产品经理首先是产品的深度用户 自己设计的产品都没使用过的产品经理&#xff0c;如何明白用户使用的问题&#xff0c;如何解决问题&#xff0c;所以产品经理肯…

java版工程项目管理系统源代码-功能清单 图文解析

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

工信部第369批新品公示冷藏车占比显著提升,新能源“卡位战”已悄然打响

一、冷藏车行业概述 随着货物储运的种类不断增多&#xff0c;有些货物在储运过程中易受到外界温度、湿度等条件影响而发生腐烂变质。为了保持易腐货物的本来品质和使用价值&#xff0c;在运输途中不发生腐烂变质和数量上的短缺&#xff0c;提高货物运输的安全性&#xff0c;减…

​windows通过修改路由表,通过特定的网卡访问特定IP​

windows通过修改路由表&#xff0c;通过特定的网卡访问特定IP 方式&#xff1a;修改路由表&#xff0c;指定的IP网段走指定的无线网卡。 步骤1&#xff1a;查看无线网卡的网关信息。终端里输入ipconfig&#xff0c;找到无线网卡对应的网关信息&#xff1b;这里是192.168.44.1…

深度学习训练营Resnet之鸟类识别

深度学习训练营之鸟类识别 原文链接理论知识储备为什么会提出ResNetResNet 环境介绍前置工作设置GPU导入数据并进行查找 数据处理可视化数据配置数据集 残差网络的介绍构建残差网络模型训练开始编译 结果可视化训练样本和测试样本预测 原文链接 &#x1f368; 本文为&#x1f5…

2023-04-19 算法面试中常见的递归和回溯问题

递归和回溯 0 递归与回溯的异同 参考文章 递归与回溯递归与回溯的理解回溯和递归区别 比较 递归回溯定义为了描述问题的某一状态&#xff0c;必须用到该状态的上一状态&#xff0c;而描述上一状态&#xff0c;又必须用到上一状态的上一状态……这种用自已来定义自己的方法…

Netty使用Google Protobuf进行编解码

文章目录 一、概述1、编解码基础2、Netty编解码器3、Protobuf概述 二、Protobuf基本使用1、引入jar包2、下载Protobuf3、编写Student.proto4、生成StudentPOJO类5、服务器端6、客户端7、验证一下吧 三、Netty使用Protobuf发送多类型对象1、编写Student.proto2、生成MyDataInfo.…

测试基础概念常见测试开发模型

文章目录&#xff1a;一.什么是需求&#xff08;1&#xff09;用户需求 &#xff08;2&#xff09;软件需求 二.测试用例 &#xff08;1&#xff09;测试用例的含义 &#xff08;2&#xff09;测试用例的作用 三.开发模型和测试模型&#xff08;1&#xff09;软件生命周期…

2023MathorcupC题电商物流网络包裹应急调运与结构优化问题建模详解+模型代码(一)

电商物流网络包裹应急调运与结构优化问题 第三次继续写数模文章和思路代码了,不知道上次美赛和国赛大家有没有认识我,没关系今年只要有数模比赛艾特我私信我,要是我有时间我一定免费出文章代码好吧!博主参与过十余次数学建模大赛,三次美赛获得过二次M奖一次H奖,国赛二等…

MySQL:JDBC 详细内容

文章目录 Day 04&#xff1a;一、JDBC1. 数据库驱动2. 概述3. 第一个 JDBC 程序4. JDBC 中对象的解释 二、改进 JDBC 程序1. 思路2. 实践注意点3. 分析4. 结果5. 代码 三、SQL 注入问题四、PreparedStatement 对象1. 实践注意点2. 分析&#xff08;增、删、改、查&#xff09;3…

电脑能录屏吗?当然可以!看看这3种方法!

案例&#xff1a;电脑有录屏功能吗&#xff1f; “我的客户让我发一个项目展示的视频&#xff0c;完成这个任务需要对电脑进行录制。问题是&#xff0c;台式电脑有录屏功能吗&#xff1f;笔记本电脑有录屏功能吗&#xff1f;电脑能录屏吗&#xff1f;有没有好心人解答一下我的…

一遍讲清楚:偏向锁到轻量级锁的升级过程(为什么耗资源)

目录 上原理&#xff1a; 细说原理&#xff1a; 什么是锁记录呢&#xff1f; 什么是Mark Word 呢&#xff1f; 上图解&#xff1a; 上原理&#xff1a; 偏向锁使⽤了⼀种等到竞争出现才释放锁的机制&#xff0c;所以当其他线程尝试竞争偏向锁时&#xff0c; 持有偏向锁的…

Java基础——IO流+字节/字符流使用

IO流 &#xff08;1&#xff09;IO流的概述&#xff1a; IO流也称为输入&#xff0c;输出流&#xff0c;就是用来读写数据的。I表示input&#xff0c;是数据从硬盘文件读入到内存的过程&#xff0c;称之输入&#xff0c;负责读。O表示output&#xff0c;是内存程序的数据从内…

【socket通信】python实现简单socket通信| server和client

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、socket通信基础知识1.1基础知识1.2socket类型 二、socket python实现2.1.服务器代码 server.py2.2.客户端代码 client.py2.3.如何运行 补充的计网知识 前言…