libxlsxwriter с MinGW
Два дня я потратил несколько часов, пытаясь заставить libxlsxwriter работать с mingw в Windows. Я следовал инструкциям по установке и сборке библиотеки, но каждый раз, когда я пытаюсь включить файлы заголовков в один из моих проектов и использовать одну из функций библиотеки, я получаю ту же ошибку:
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++... помощь очень ценится!
РЕДАКТИРОВАТЬ:
Я пытался установить встроенные файлы из консоли mys2 с помощью pacman pacman -Ss xlsx. Судя по всему, он уже установлен. Это вывод консоли:
$ 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. У меня есть два файла (libxlsxwriter.a, libxlsxwriter.dll) в папке usr/local и в домашней папке (где они были изначально созданы).
1 ответ
Вы можете найти библиотеку libxlsxwriter в виде пакета Msys2 и установить их с помощью (из оболочки MinGW 64) следующей команды:
pacman -S mingw-w64-x86_64-libxlsxwriter