2016-07-19 1 views
2

J'essaie d'utiliser libxlsxwriter, mais je peux sembler obtenir des choses à compiler ou à exécuter correctement. J'ai suivi les instructions pour Windows en utilisant Mingw-w64 et msys2 disponible ici: http://libxlsxwriter.github.io/getting_started.html.Exécution de libxlsxwriter sous Windows

J'ai installé msys2 à partir de leur site Web et mis à jour tout en utilisant pacman -Syu. Ensuite, j'ai installé zlib avec le recommandé:

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

Alors je lance le code pour télécharger et compiler 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 

Maintenant, il est un exécutable nommé myexcel qui devrait créer un document Excel de base, mais quand Je double clique dessus je reçois les erreurs:

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

Je reçois aussi l'erreur pour manque msys-z.dll

Je ne suis pas sûr de ce que j'ai fait de mal ou comment le réparer.

Toute aide serait appréciée

modifier:

si je lance:

make examples 
./examples/hello 

L'exemple du monde bonjour s'exécute avec succès si les choses semblent être installés correctement. Je suppose que je ne comprends pas comment l'exécuter .c

+1

Vous devez ajouter le chemin d'accès aux DLL MSYS dans Windows. ATM la DLL est seulement dans le chemin de la console MSYS. Pouvez-vous exécuter l'exécutable à partir de la console MSYS au moins? –

+0

Oui c'est le cas! Ça a du sens, merci! – Carl

+0

J'ai ajouté MinGW/bin à mon PATH, mais cela ne fonctionne toujours pas. Savez-vous comment ajouter MSYS au chemin de la console? – Carl

Répondre

2

MSYS console définit le chemin d'accès aux commandes MSYS & DLL lors de l'ouverture de la console: si MSYS est installé dans C:\msys64, il ajoute localement le chemin à C:\msys64\usr\bin mais il ne l'ajoute pas au système Windows PATH. Donc, si vous cliquez sur l'exécutable en dehors de MSYS, il ne peut pas trouver les DLL car elles ne sont pas dans Windows PATH.

de nombreuses solutions:

1) ajouter C:\msys64\usr\bin dans l'utilisateur ou PATH ordinateur (modifier les variables d'environnement). En prime, vous avez accès à des commandes telles que grep dans votre CMD Windows. Comme inconvénient, il peut y avoir des mixages/conflits avec des commandes telles que find ou sort.

ou

2) créer un fichier contenant les éléments suivants myexcel.bat dans votre répertoire exécutable:

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

(%~PD0 prefix permet de trouver l'exécutable à partir du chemin de .bat si .bat fichier est exécuté à partir un autre répertoire, il trouve toujours l'exécutable)

3) copier les DLL MSYS où réside votre exécutable. Puisque les DLL sont dans le même répertoire que le fichier .exe, Windows les trouvera. Recommandé pour une distribution autonome, pas pour un usage personnel, car il crée beaucoup de copies.

4) liaison statique contre MSYS .a libs. Je ne sais pas si cela peut être fait pour toutes les bibliothèques. Impossible de trouver libz.a par exemple.

+0

Merci pour l'explication approfondie. Note mineure: le chemin devrait être 'C: \ msys64 \ usr \ bin'. – Carl