公司网站登陆后台管理中心不能修改前台主页,电商网站建设浩森宇特,苏州网站建设品牌公司,做网站需要什么域名最近有一个需求在windows处理xls#xff0c;所以就需要libxls这个库#xff0c;调查了一下#xff0c;基于C的库的解析情况如下#xff1a; 所以最理想的就是Libxlsd个开源的方案
基于历史整理的 libxls 在 MinGW 下的编译步骤
前提条件
系统#xff1a;Windows#…最近有一个需求在windows处理xls所以就需要libxls这个库调查了一下基于C的库的解析情况如下 所以最理想的就是Libxlsd个开源的方案
基于历史整理的 libxls 在 MinGW 下的编译步骤
前提条件
系统Windows你的情况。工具已安装 MSYS2C:\msys64。源码libxls 1.6.3已下载并解压到 /Downloads/libxls-1.6.3/libxls-1.6.3。目标生成 libxlsreader-8.dll包括 Debug 版本。 编译步骤
1. 准备 MSYS2 环境 更新 MSYS2 打开任意 MSYS2 终端如 MSYS 终端C:\msys64\msys2_shell.cmd -msys更新系统pacman -Syu若提示关闭终端关闭后重新打开并再次运行 pacman -Syu。 安装基本工具 在 MSYS 终端安装 autotoolspacman -S autoconf automake libtool autoconf-archive make在 MinGW64 终端安装编译器C:\msys64\msys2_shell.cmd -mingw64
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make2. 配置源码 进入源码目录 在 MinGW64 终端cd /Downloads/libxls-1.6.3/libxls-1.6.3生成 configure 文件 切换到 MSYS 终端autotools 需要 POSIX 环境C:\msys64\msys2_shell.cmd -msys
cd /Downloads/libxls-1.6.3/libxls-1.6.3运行autoreconf -i注意若报错如 AX_CXX_COMPILE_STDCXX_11确保 autoconf-archive 已安装。
3. 配置编译选项 打开 MinGW64 终端 C:\msys64\msys2_shell.cmd -mingw64
cd /Downloads/libxls-1.6.3/libxls-1.6.3配置 Release 版本默认 ./configure --prefix/mingw64 MAKEmingw32-make配置 Debug 版本 添加调试符号并禁用优化./configure --prefix/mingw64 MAKEmingw32-make CFLAGS-g -O0 CXXFLAGS-g -O0 LDFLAGS-g可选若需静态库./configure --prefix/mingw64 --disable-shared --enable-static MAKEmingw32-make CFLAGS-g -O0 CXXFLAGS-g -O04. 编译 清理旧构建可选 mingw32-make clean编译 mingw32-make注意若遇到 spawnv 类型冲突错误见下文“常见问题”。
5. 安装 安装库和头文件 mingw32-make install验证输出 检查生成的库ls /mingw64/bin/libxlsreader-8.dll # 动态库
ls /mingw64/lib/libxlsreader.dll.a # 导入库
ls /mingw64/lib/libxlsreader.la # Libtool 元数据检查头文件ls /mingw64/include/libxlsDebug 版本验证objdump -h /mingw64/bin/libxlsreader-8.dll | grep debug常见问题及解决
1. make: command not found
现象运行 make 时出错。解决pacman -S mingw-w64-x86_64-make
alias makemingw32-make # 临时别名或直接用./configure --prefix/mingw64 MAKEmingw32-make
mingw32-make也可以使用以下这个指令亲测
CCgcc ./configure --buildmingw64 --prefix/mingw64 --enable-static --enable-shared MAKEmingw32-make make install2. AX_CXX_COMPILE_STDCXX_11 语法错误
现象./configure: line 19757: syntax error near unexpected token ,解决 安装 autoconf-archivepacman -S autoconf-archive # 在 MSYS 或 MinGW64 终端重新运行autoreconf -i # 在 MSYS 终端3. spawnv 类型冲突
现象C:/msys64/mingw64/include/process.h:196:28: error: conflicting types for spawnv解决 修改代码 编辑 src/xls2csv.c、test/test.c、test/test2.c 和 cplusplus/main.cpp- rval (int) _spawnv(_P_WAIT, lt_argv_zero, (const char * const *) newargz);rval (int) _spawnv(_P_WAIT, lt_argv_zero, (char *const *) newargz);或移除 unistd.h替换为#include process.h禁用测试程序和 xls2csv推荐若只需库 编辑 Makefile.am#bin_PROGRAMS xls2csv
#noinst_PROGRAMS test_libxls test2_libxls
#if HAVE_CXX11
#noinst_PROGRAMS test_cpp
#endif重新生成autoreconf -i # 在 MSYS 终端
./configure --prefix/mingw64 MAKEmingw32-make
mingw32-make4. Makefile.am 警告
现象Makefile.am:35: warning: variable xls2csv_SOURCES is defined but no program or library has xls2csv as canonical name解决 若禁用程序忽略警告。若需编译程序确保 bin_PROGRAMS 和 noinst_PROGRAMS 未注释。 生成的库
Release 版本 /mingw64/bin/libxlsreader-8.dll/mingw64/lib/libxlsreader.dll.a/mingw64/lib/libxlsreader.la Debug 版本 同上但文件包含调试符号用 -g -O0 配置。 使用示例 C 调用MinGW gcc -I/mingw64/include/libxls -L/mingw64/bin -lxlsreader test.c -o test.exe
./test.exeVisual Studio 需用 MSVC 重新编译或将 .dll 放入项目目录并配置头文件。 总结
以上步骤在你的环境下MSYS2 MinGW64路径 /Downloads/libxls-1.6.3/libxls-1.6.3可生成 libxlsreader-8.dll。Debug 版本需添加 CFLAGS-g -O0。若只需库禁用测试程序可简化流程。按步骤操作即可成功编译
第二步骤就是将得到的dll转为.lib ,供visual studio引用
使用 dlltool 生成 .def 文件再转换 (如果 reimp 不可用我是没找到合适安装包和路径可通过以下步骤手动转换)
生成 .def 文件
gendef libxlsreader-8.dll使用 dlltool 生成 .lib
dlltool -d libxlsreader.def -D libxlsreader.dll -l libxlsreader.lib -k