2016-07-19 4 views
2

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

Я следил за указаниями для 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, который должен создать основной первенствовать документ, но когда Я дважды щелкните по нему я получаю ошибки:

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

Я также получаю ошибку пропавших msys-z.dll

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

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

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

если я бегу:

make examples 
./examples/hello 

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

+1

Вы должны добавить путь к DLL MSYS в Windows. ATM dll находится только в консоли консоли MSYS. Вы можете запустить исполняемый файл с консоли MSYS? –

+0

Да, да! Имеет смысл спасибо! – Carl

+0

Я добавил MinGW/bin в PATH, но он все еще не работает. Вы знаете, как добавить MSYS в консольный путь? – Carl

ответ

2

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

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

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

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

или

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

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

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

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

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

+0

Спасибо за подробное объяснение. Незначительное примечание: путь должен быть 'C: \ msys64 \ usr \ bin'. – Carl

Смежные вопросы