【发布时间】:2020-01-26 16:00:43
【问题描述】:
两天来,我花了几个小时试图让 libxlsxwriter 在 Windows 上与 mingw 一起工作。我按照说明安装和构建库,但每次我尝试在我的一个项目中包含头文件并使用库中的一个函数时,我最终都会遇到相同的错误:
D:\Apps\CLion\bin\cmake\win\bin\cmake.exe --build C:\Users\Simon\CLionProjects\myexcel\cmake-build-debug --target all -- -j 4
[ 50%] Linking CXX executable myexcel.exe
D:/Apps/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\myexcel.dir/objects.a(main.cpp.obj): in function `main':
C:/Users/Simon/CLionProjects/myexcel/main.cpp:4: undefined reference to `workbook_new'
D:/Apps/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/Simon/CLionProjects/myexcel/main.cpp:5: undefined reference to `workbook_add_worksheet'
D:/Apps/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/Simon/CLionProjects/myexcel/main.cpp:8: undefined reference to `worksheet_write_string'
D:/Apps/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/Simon/CLionProjects/myexcel/main.cpp:9: undefined reference to `workbook_close'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[2]: *** [CMakeFiles\myexcel.dir\build.make:85: myexcel.exe] Error 1
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:75: CMakeFiles/myexcel.dir/all] Error 2
mingw32-make.exe: *** [Makefile:83: all] Error 2
我的代码非常基础(几乎是提供的示例代码之一):
#include "xlsxwriter.h"
int main() {
lxw_workbook *workbook = workbook_new("myexcel.xlsx");
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
int row = 0;
int col = 0;
worksheet_write_string(worksheet, row, col, "Hello me!", NULL);
return workbook_close(workbook);
}
我已经尝试了几种部署 mingw 的方法,但我最终选择了 msys2 作为托管 mingw 的平台,因为我觉得 *nix 环境在管理大量包时是有益的,并且它附带需要预装 zlib。
值得一提的是我在 CLion 2019.3 中的工具链配置
这是我的项目配置:
有什么想法吗?我是 C/C++ 方面的新手...非常感谢您的帮助!
编辑:
我尝试使用 pacman pacman -Ss xlsx 从 mys2 控制台安装构建文件。从外观上看,它已经安装好了。这是控制台的输出:
$ pacman -Ss xlsx
mingw32/mingw-w64-i686-libxlsxwriter 0.9.4-1
A C library for creating Excel XLSX files (mingw-w64)
mingw32/mingw-w64-i686-python-openpyxl 3.0.2-1
A python library to read/write Excel 2007 xlsx/xlsm file (mingw-w64)
mingw32/mingw-w64-i686-python-xlsxwriter 1.2.7-1
A Python module for creating Excel XLSL files (mingw-w64)
mingw32/mingw-w64-i686-xlnt 1.4.0-1
User-friendly xlsx library for C++14 (mingw-w64)
mingw64/mingw-w64-x86_64-libxlsxwriter 0.9.4-1
A C library for creating Excel XLSX files (mingw-w64)
mingw64/mingw-w64-x86_64-python-openpyxl 3.0.2-1
A python library to read/write Excel 2007 xlsx/xlsm file (mingw-w64)
mingw64/mingw-w64-x86_64-python-xlsxwriter 1.2.7-1
A Python module for creating Excel XLSL files (mingw-w64)
mingw64/mingw-w64-x86_64-xlnt 1.4.0-1
User-friendly xlsx library for C++14 (mingw-w64)
坦率地说,我不明白。任何地方都没有 libxlsxwriter.so。我在 usr/local 文件夹和主文件夹(最初构建它们的位置)中有两个文件(libxlsxwriter.a、libxlsxwriter.dll)。
【问题讨论】:
-
我不了解您的 IDE,但您似乎没有构建 xlsxwriter 库
-
MSYS2 包含 libxlsxwriter 作为一个包 (
pacman -Ss xlsx),因此您可以安装它而不是尝试构建它 -
看来你是对的。我已经构建了这两个文件:libxlsxwriter.a、libxlsxwriter.dll 根据手册,没有 libxlsxwriter.so 的迹象,应该在那里。它是否正确?我会尝试您建议的解决方案并报告
-
我尝试了您的解决方案并编辑了我的帖子。不幸的是,仍然一无所获
-
Windows 中没有
.so文件。您应该链接到.a文件
标签: c++ c mingw libxlsxwriter