Запуск libxlsxwriter в Windows

Я пытаюсь использовать libxlsxwriter, но я, кажется, могу заставить вещи компилироваться или работать правильно.

Я следовал инструкциям для Windows, используя Mingw-w64 а также msys2 доступно здесь: http://libxlsxwriter.github.io/getting_started.html.

Я установил msys2 со своего сайта и обновил все с помощью pacman -Syu, Затем я установил zlib с рекомендуемым:

# Install the dev tools for libxlsxwriter.
pacman -S git gcc make zlib-devel

Затем я запускаю код для загрузки и компиляции libxlswriter:

# Clone and build libxlsxwriter.
git clone https://github.com/jmcnamara/libxlsxwriter.git
cd libxlsxwriter/
make
make install
# run example
cd ..
cc myexcel.c -o myexcel -lxlsxwriter -lz

Теперь есть исполняемый файл с именем myexcel который должен создать базовый документ Excel, но когда я дважды щелкаю по нему, я получаю ошибки:

The program can't start because msys-2.0.dll is missing from your computer.

Я также получаю сообщение об ошибке msys-z.dll

Я не уверен, что я сделал неправильно или как это исправить.

Любая помощь будет оценена

редактировать:

если я бегу:

make examples
./examples/hello

Пример hello world успешно запускается, поэтому кажется, что все установлено правильно. Я думаю, я просто не понимаю, как заставить его запускать пользовательский.c

1 ответ

Решение

Консоль MSYS определяет путь к командам и библиотекам MSYS при открытии консоли: например, если MSYS установлен в C:\msys64 он локально добавляет путь к C:\msys64\usr\bin но он не добавляет его в системный PATH Windows.

Поэтому, если вы щелкнете по исполняемому файлу вне MSYS, он не сможет найти библиотеки DLL, потому что они не находятся в Windows PATH.

много решений:

1) добавить C:\msys64\usr\bin в пользовательском или компьютерном PATH (редактировать переменные окружения). В качестве бонуса вы получаете доступ к таким командам, как grep в твоих windows CMD. Недостатком может быть смешение / конфликт с такими командами, как find или же sort,

или же

2) создать myexcel.bat файл, содержащий следующее в вашем каталоге исполняемых файлов:

@echo off
set PATH=C:\msys64\usr\bin;%PATH%
%~PD0\myexcel.exe

(%~PD0 prefix позволяет найти исполняемый файл по пути.bat, поэтому, если файл.bat запускается из другого каталога, он все равно находит исполняемый файл)

3) скопируйте библиотеки MSYS, где находится ваш исполняемый файл. Поскольку библиотеки DLL находятся в том же каталоге, что и.exe, Windows найдет их. Рекомендуется для автономного распространения, а не для личного использования, поскольку создает много копий.

4) статическая связь с MSYS .a libs. Я не знаю, можно ли это сделать для всех людей. Не могу найти libz.a например.

Другие вопросы по тегам