开源库xlslib跨平台编译
由于最近参加一个OFFICE正文提取项目,所以简单的了解了一下OFFICE的结构。OFFICE当前分为两种结构,第一种是2003,第二种是2007到至今一直沿用的结构。
xlslib库是纯C编写的开源的读取OFFICE2003的库,支持WINDOWS\LINUX\MAC等平台,博主程序主要在WINDOWS和LINUX平台上运行,所以MAC未测试。
博主不想在WINDOWS和LINUX平台上分别使用两套静态库,所以这里博主在开发的时候使用了xlslib库源码。下面主要记录一下编译的过程,留待以后遇到同样的问题可以尽快解决。
- 下载xlslib源码 地址:https://sourceforge.net/projects/xlslib/
- 打开源码,你会发现他需要生成config.h文件,这个文件定义了很多宏,使用宏控制跨平台。
- windows下博主使用的msys2编译(linux下编译完全一致)。
- 在源码根目录创建一个文件夹,名字随意,然后输入下面命令(注:文件夹路径使用绝对路径)./configure --prefix=./fuck
编译完成后,自动生成config.h文件,对比文件linux和windows下生成的config.h,有俩出宏不同 HAVE_ICONV 和 HAVE_POW,第一个需要我们自己下载libiconv库,gun开源库,后一个屏蔽就可以。
至此使用xlslib源码,一套代码就实现了windows和linux平台上同时使用。
使用过程中发现xlslib库存在一下几个问题:
1.不支持内存输入接口,读取文件和解析接口未分开,通过对源码得修改,可以使其支持纯内存接口。
2.内部数据拷贝未作边界校验,对于破损得文件,解析会出现崩溃。
3.内存释放未做非空校验,如果解析出错然后释放内存,会大概率崩溃。
4.过度依赖断言
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步