Compiler un DLL depuis un fichier C ou C++

JoGoiA Messages postés 3 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 15 mars 2009 - 14 mars 2009 à 02:03
JoGoiA Messages postés 3 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 15 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 ^^
A voir également:

3 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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 :

LIBRARY Nom_de_la_Dll
EXPORTS
   Fonction1
   Fonction2
   ...
0
JoGoiA Messages postés 3 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 15 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...

Comment corriger ce problème ?
0
JoGoiA Messages postés 3 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 15 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...
0
Rejoignez-nous