C++/Qt从零开始编译使用libxlsxwriter库

目录

环境

下载

编译

[编译 32 位的 zlib](#编译 32 位的 zlib)

[编译 32 位的 libxlsxwriter](#编译 32 位的 libxlsxwriter)

使用

环境整理

配置到项目中去

一、附加包含目录

二、附加库目录

三、附加依赖项

测试


环境

Windows11,Qt5.7,vs2022,win32位,CMake4.0.3

下载

https://github.com/QtExcel/Qlibxlsxwriter/tree/master -- libxlsxwriter源码库

https://github.com/madler/zlib/tree/develop -- zlib(libxlsxwriter依赖库)

最后大概如图

libxlsxwriter

zlib

将其放在一个文件夹下(看自己习惯)

编译

编译 32 位的 zlib

使用CMake

1.在 CMake-Gui 中,Where is the source code 选择 E:\ThirdParty\zlib。

2.Where to build the binaries 选择 E:\ThirdParty\zlib\build32(创建一个 build32 文件夹)。

3.点击 Configure:

4.生成器选择:Visual Studio 17 2022

5.平台选择:Win32 (这是 32 位的关键!)

6.点击 Finish。

7.如果没有红色报错,点击 Generate。

8.点击 Open Project 打开 VS2022。

9.在 VS2022 中,将顶部配置改为 Release,右键 zlibstatic 项目 -> 生成。

*(生成完成后,会在 E:\ThirdParty\zlib\build32\Release 下得到 zlibstatic.lib)*

我最后生成的是zs.lib需要注意,可能会有点不一样

第五步报错

没有找到 Looking for unistd.h - not found

典型的 Windows 环境下编译 Unix/Linix 库 时会遇到的错误

这个错误的意思是:CMake 在编译 zlib 时,试图寻找一个名为 unistd.h 的头文件,但这个文件是 Linux/Unix 系统才有的,在 Windows 上不存在。CMake 默认会尝试寻找它,找不到就会报错。

错误消失了,再点击 Generate 生成项目文件

找到你构建的位置,发现里面这些文件,就是我们所的vs项目文件,用vs(看自己在CMake使用的版本,我用的是vs2022)打开 zlib.sln

位数选择

右键生成

找到你库生成的位置

这样 32 位的 zlib 库就生成了,如果生成完 Debug,切换成Release不允许的话,关闭重启就好了

Debug

Release

编译 32 位的 libxlsxwriter

同理,步骤如下

1.重新打开 CMake (cmake-gui)。

2.Where is the source code: 选择 E:\ThirdParty\libxlsxwriter

3.Where to build the binaries: 选择 E:\ThirdParty\libxlsxwriter\build32

4.点击 Configure:

5.生成器选择:Visual Studio 17 2022

6.平台选择:Win32

7.点击 Finish。

红色报错

会提示找不到

发现没有环境词条,需要进行添加

我这里是 E:\ThirdParty\zlib,具体得看zlib根目录在哪,就是你拉取下来那个源码的路径

第 1 步:配置 ZLIB_ROOT

在 CMake-Gui 的配置界面中,找到名为 ZLIB_ROOT 的条目。

如果 ZLIB_ROOT 已经存在,请确保它的值是 E:/ThirdParty/zlib(或者您解压 zlib 的路径)。

如果 ZLIB_ROOT 不存在,请点击 Add Entry,然后添加:

Name: ZLIB_ROOT

Type: PATH

Value: E:/ThirdParty/zlib
第 2 步:配置 ZLIB_LIBRARY(找.lib) 和 ZLIB_INCLUDE_DIR(找.h)

在 CMake-Gui 的配置界面中,找到 ZLIB_LIBRARY 和 ZLIB_INCLUDE_DIR 这两个条目。

ZLIB_INCLUDE_DIR:这个值应该是 E:/ThirdParty/zlib。

ZLIB_LIBRARY:这个值应该是 E:/ThirdParty/zlib/build32/Release/zs.lib。

如果这两个条目不存在,您需要手动添加它们:

点击 Add Entry。

添加 ZLIB_INCLUDE_DIR,值为 E:/ThirdParty/zlib。

再次点击 Add Entry。

添加 ZLIB_LIBRARY,值为 E:/ThirdParty/zlib/build32/Release/zs.lib。
第 3 步:点击 Configure

完成以上配置后,点击 Configure 按钮。

CMake 会重新检查,这次它应该能找到 zlib 的头文件和库文件,并且红色报错应该会消失。

第 4 步:点击 Generate

如果没有红色报错,点击 Generate 按钮,生成 VS2022 的项目文件。

一定要根据自己的路径来选择!!!

项目文件

编译生成

在 VS2022 中编译 打开 xlsxwriter.sln 工程文件

将顶部配置改为 Release。

右键点击 xlsxwriter 项目,选择 生成。

Debug

Release

使用

环境整理

Debug和Release 不一样,需要单独配置,不过配置的方法一样,这里只讲Debug,首先整理成一个文件夹下,方便添加

Debug

Release

xlsxwriter 这个文件是 libxlsxwriter 自带的,里面是他用的头文件,直接拿过来

在根目录下的 include 里面和头文件在一起

拷贝过来

为什么需要,打开 xlsxwriter.h 就知道了

配置到项目中去

进入你的项目,右键你的项目,打开 属性

这三项需要配置,一个配置头文件,一个配置静态库,一个静态库名称

一、附加包含目录

告诉编译器如何找到.h头文件,所以(Debug / Release 相同)

配置路径
C/C++ → 常规 → 附加包含目录 → 添加这一行

二、附加库目录

库不一样,所以分开配,找库,告诉编译器在哪找库

配置路径
链接器 → 常规 → 附加库目录

三、附加依赖项

添加库的具体名称(注意文件名区别!),所以debug和release不一样!

配置路径
链接器 → 输入 → 附加依赖项

测试

cpp 复制代码
    // 创建一个新的工作簿
    lxw_workbook* workbook = workbook_new("1111output.xlsx");
    // 添加一个工作表
    lxw_worksheet* worksheet = workbook_add_worksheet(workbook, NULL);

    // 写入一些数据
    worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
    worksheet_write_number(worksheet, 1, 0, 123, NULL);

    // 保存并关闭工作簿
    int result = workbook_close(workbook);

结果如下图

相关推荐
报错小能手1 小时前
Swift UI 用 MVVM 架构 Combine EventBus 实现待办清单
开发语言·ui·swift
威迪斯特1 小时前
Cobra框架:Go语言命令行开发的现代化利器
开发语言·前端·后端·golang·cobra·交互模型·命令行框架
IT利刃出鞘2 小时前
Java反射--PropertyDescriptor的使用
java·开发语言
㳺三才人子2 小时前
容器內的 H2 控制台
开发语言·前端·javascript
Evand J2 小时前
【MATLAB程序】基于RSSI的RFID二维轨迹定位仿真介绍,EKF滤波增加轨迹定位精度。附下载链接
开发语言·matlab·平面·滤波·定位·导航
遇见火星2 小时前
Firewalld 防火墙实战指南 + TCPWrapper 七层访问控制
开发语言·windows·python
guygg882 小时前
MATLAB实现Bouc-Wen模型动力响应计算
开发语言·matlab
aini_lovee2 小时前
基于MATLAB实现行人检测
开发语言·matlab
所愿ღ2 小时前
SSM框架-Spring1
java·开发语言·笔记·spring