JoGoiA
Messages postés3Date d'inscriptionvendredi 25 août 2006StatutMembreDernière intervention15 mars 2009
-
14 mars 2009 à 02:03
JoGoiA
Messages postés3Date d'inscriptionvendredi 25 août 2006StatutMembreDernière intervention15 mars 2009
-
15 mars 2009 à 20:07
Salut à tous.
Je voudrais pouvoir utiliser des function C ou C++ (je ne sais pas trop lequel des deux mais je crois que c'est du C) qui sont contenue dans un DLL gràce à Lua.
Pour cela, je doit les wrapper.
J'ai donc récupéré le header de la bibliothéque et j'ai utilisé SWIG pour en faire un mappage Lua.
Jusque là, tout va bien (je crois...) et j'obtiens un fichier maBiblio_wrap.c
Pour pouvoir l'utiliser avec l'interpréteur Lua, je dois compiler ce fichier .c pour en faire un DLL et c'est là que je coince.
J'ai essayé de créer un projet DLL avec DEV-CPP mais il me créé automatiquement deux fichiers : dllmain.cpp et dll.h
Dans le fichier dll.h, il me demande de remplacer dll.h par mon header or... je n'en ai pas.
Je n'ai qu'un seul fichier .c, construit d'aprés le header de ma bibliotheque.
N'étant vraiment pas calé en C/C++, je séche un peu.
Comment peut on généré un DLL à partir d'un seul fichier .c ?
Merci d'avance ^^
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 15 mars 2009 à 10:23
ben tu vires dll.h et la ligne #include "dll.h" dans le fichier .cpp
par contre faut indiquer au compilateur quelles fonctions exporter, tu peux sans doute (je connais pas DevCpp) le faire via un fichier .def à ajouter.
structure minimale de ce fichier :
JoGoiA
Messages postés3Date d'inscriptionvendredi 25 août 2006StatutMembreDernière intervention15 mars 2009 15 mars 2009 à 19:12
Ok.
En fait, j'ai trouvé ce merveilleux petit tuto :
http://www.cygwin.com/cygwin-ug-net/dll.html qui explique exactement étape par étape comment faire ce que je veux.
J'utilise donc GCC pour créer le fichier wrap.o que je dois maintenant transformer en DLL.
Seulement voila, bien que le fichier .o se soit compilé correctement aprés que j'ai rajouté les quelques fichier .h dont il avait besoin (les #include du fichier .c), lorsque je passe à l'étape suivante, j'ai plein d'erreurs, toutes du même type : "undefined reference to ..." une function. Les function qui posent probléme sont toutes des function de base de Lua et j'en conclus que mon fichier wrap utilise de nombreuses fonction Lua dont il connait l'existence (gràce au header...) mais pas les définition de celle-ci ou il ne peut pas les utiliser pour compiler le fichier DLL final...
JoGoiA
Messages postés3Date d'inscriptionvendredi 25 août 2006StatutMembreDernière intervention15 mars 2009 15 mars 2009 à 20:07
Aprés avoir pas mal fouillé, j'ai bien vérifié que les function non référencées sont bien celle définies par lua.h qu'il m'a bien fallu joindre à mon fichier wrap.c lors de la création du fichier wrap.o
Donc, GCC devrait connaitre ces function.
J'ai trouvé plusieurs personnes quii ont le même problème que moi et qui ont trouvé une solution :
Lors de la demande GCC, je dois préciser le nom de ma biblio lua comme une option pour GCC. Seulement voila, j'ai une nouvelle erreur :
C:\MinGW\......\ld.exe: cannot find -lua
J'ai essayé de spécifier le chemin vers les bin de lua mais rien n'y fait...