赞
踩
想换一个新版的libxlsxwriter, 自己编译一个出来.
libxlsxwriter依赖zlib, 前面已经成功编译了zlib(zlib - 编译).
libxlsxwriter的库地址 : https://github.com/jmcnamara/libxlsxwriter.git
迁出到本地
切换到最新的发布版本.
VS2019 16.11.32
CMAKE version 3.20.21032501-MSVC_2
ZLIB v1.3
官方工程中, 并没有对编译过程做详细说明.
这时, 可以看的就是工程自带的CMakeLists.txt 和CMake的官方帮助(https://cmake.org/cmake/help/v3.28/search.html?q=find_package)
在官方资料中搜索之前, 指定和自己用的CMake差不多的版本.
打开命令行 ‘x64 Native Tools Command Prompt for VS 2019’
进入libxlsxwriter在本地的迁出目录.
cd /d D:\3rd_prj\excel\libxlsxwriter
建立一个编译用的目录并进入
mkdir .\build
cd /d .\build
在工程根目录建立zlib文件夹, 用于放置编译依赖的zlib组件. 主要是用到了存根.lib
mkdir ..\zlib
将自己编译的zlib组件拷贝过去, 最主要就是存根.lib, 这样VS工程就能建立.
其他缺啥, 等打开VS2019工程后, 缺啥补啥, 可以自己改配置.
CMakeLists.txt 中要找(find_package)的zlib包叫做zlib, 所以要将自己编译的存根.lib(my_zlib_1d3.lib)改名为zlib.lib, 否则CMake编译报错
从源码建立一个VS2019 X64的工程, 并指定ZLIB依赖路径
cmake .. -G "Visual Studio 16 2019" -A x64 -DZLIB_ROOT:STRING=../zlib
D:\3rd_prj\excel\libxlsxwriter\build>cmake .. -G "Visual Studio 16 2019" -A x64 -DZLIB_ROOT:STRING=../zlib -- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045. -- The C compiler identification is MSVC 19.29.30153.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- The CXX compiler identification is MSVC 19.29.30153.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found ZLIB: D:/3rd_prj/excel/libxlsxwriter/zlib/zlib.lib (found version "1.3.#define ZLIB_VERSION "1.3"") zlib version: -- Configuring done -- Generating done -- Build files have been written to: D:/3rd_prj/excel/libxlsxwriter/build
编译成功了.
打开VS2019工程
尝试编译工程, 有啥错误就补啥, 主要是zlib依赖相关.
将自己编译zlib时的目录拷贝过来, 去掉除了.h之外的文件(*.c, *.rc, *.def).
再尝试编译
编译成功了.
先尝试全部编译解决方案, 通过.
再编译INSTALL工程
编译成功后, 就会将.lib, *.h 拷贝到 C:\Program Files\xlsxwriter
将C:\Program Files\xlsxwriter拷贝到自己的开发目录做存档, 给以后的工程用.
代码就用官方的例子.
新建一个VS2019工程, 编译选项为x64 debug, 包含进自己编译的libxlsxwriter和zlib的库, 头, 摆好dll
// testA.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <windows.h> #include "xlsxwriter.h" #pragma comment(lib, "xlsxwriter.lib") #pragma comment(lib, "my_zlib_1d3.lib") int main() { int i_rc = 0; lxw_workbook* workbook = workbook_new("utf8.xlsx"); lxw_worksheet* worksheet = workbook_add_worksheet(workbook, NULL); worksheet_write_string(worksheet, 2, 1, "Это фраза на русском!", NULL); i_rc = workbook_close(workbook); return S_OK; }
将自己编译的zlib.dll放到exe同级目录, 运行编译出来的exe, 成功. 生成了.xlsx.
libxlsxwriter工程的编译, 测试 都成功了.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。