开源库xlslib跨平台编译

  由于最近参加一个OFFICE正文提取项目,所以简单的了解了一下OFFICE的结构。OFFICE当前分为两种结构,第一种是2003,第二种是2007到至今一直沿用的结构。

xlslib库是纯C编写的开源的读取OFFICE2003的库,支持WINDOWSLINUXMAC等平台,博主程序主要在WINDOWS和LINUX平台上运行,所以MAC未测试。

  博主不想在WINDOWS和LINUX平台上分别使用两套静态库,所以这里博主在开发的时候使用了xlslib库源码。下面主要记录一下编译的过程,留待以后遇到同样的问题可以尽快解决。

  1. 下载xlslib源码  地址:https://sourceforge.net/projects/xlslib/
  2. 打开源码,你会发现他需要生成config.h文件,这个文件定义了很多宏,使用宏控制跨平台。
  3. windows下博主使用的msys2编译(linux下编译完全一致)。
  4. 在源码根目录创建一个文件夹,名字随意,然后输入下面命令(注:文件夹路径使用绝对路径)./configure --prefix=./fuck

  编译完成后,自动生成config.h文件,对比文件linux和windows下生成的config.h,有俩出宏不同  HAVE_ICONV 和 HAVE_POW,第一个需要我们自己下载libiconv库,gun开源库,后一个屏蔽就可以。

至此使用xlslib源码,一套代码就实现了windows和linux平台上同时使用。

  使用过程中发现xlslib库存在一下几个问题:

  1.不支持内存输入接口,读取文件和解析接口未分开,通过对源码得修改,可以使其支持纯内存接口。

  2.内部数据拷贝未作边界校验,对于破损得文件,解析会出现崩溃。

  3.内存释放未做非空校验,如果解析出错然后释放内存,会大概率崩溃。

  4.过度依赖断言

原文地址:https://www.cnblogs.com/WalkerBlog/p/9446953.html