MinGW
MinGW est un fork de Cygwin destiné à faciliter le développement d’applications Windows dans un contexte Unix-like. De même que Cygwin, il s’agit d’un outillage libre et totalement gratuit.
Bien que la création d’une DLL Windows soit possible avec Cygwin standard, c’est quelque peu complexe, et de plus le binaire généré depend de la DLL cygwin. Les développeurs de MinGW ont voulu rendre la vie plus simple sur ces points.
Les 2 packages d’installation à utiliser pour obtenir très vite et sans migraine un environnement permettant de développer votre DLL pilote de course sont les suivants :
– MSYS-1.0.11-2004.04.30-1
– MinGW-3.1.0-1
Désolé de ne pas mettre les fichiers ici, mais l’un des deux était visiblement trop volumineux et a été refusé en upload (au bout de 15 minutes de transfert 🙁)
ATTENTION : Il est proposé par défaut un autre package d’installation, censé simplifier la vie. En fait, je n’ai pas réussi à faire marcher le résultat, car il manque tout simplement la version MinGW de gcc, et que celle de Cygwin semble ne pas convenir. Donc, utilisez plutôt les références que nous vous proposons ici et tout ira bien 😉
La procédure d’installation est assez triviale :
– installer MSYS (l’environnement ligne de commande et les outils à la Unix) en exécutant MSYS-1.0.11-2004.04.30-1.exe
– installer MinGW (la partie compilation) en exécutant MinGW-3.1.0-1.exe
C’est tout. Comme suggéré en fin d’install de MinGW, configurez le fichier fstab. En fait il suffit de renommer le fichier exemple proposé en fstb si vous avez installé l’ensemble comme préconisé, à savoir dans c :/msys et c :/mingw.
Pour plus d’info sur MinGW : http://www.mingw.org/
Création d’une DLL
Le plus simple est de lire la FAQ, et plus particulièrement la section How to create a DLL. Pour compiler et générer une DLL, les seules commandes à utiliser sont :
gcc -c -DBUILD_DLL mydll.c gcc -shared -o mydll.dll -Wl,--out-implib,libtstdll.a mydll.o
L’include
La directive d’export d’un point d’entrée s’exprimant par un simple EXPORT, sans aucun underscore, nous fournissons ci-après une version mise à jour de l’include vehicle_controler.h. Elle inclut d’ailleurs la remarque faite par Blaise concernant une curiosité de MSVC++ au niveau du positionnement de cette directive dans certaines déclaration de protoype.
Have fun 🙂
Eric