|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Inscription : octobre 2006 Messages : 456 ![]() |
Bonjour
je souhaite créer une librairie dll à partir de code C et avec mingw (donc sous windows). Plus précisément, j'ai plusieurs fichiers sources (file1.c, file2.c, ...) et je voudrais savoir comment j'obtiens le fichier nom.dll (quelles sont les étapes de compilation) ? Merci |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Thierry ChappuisEnseignant Chercheur Inscription : mai 2005 Messages : 3 481 ![]() |
__________________
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow FAQ-Python FAQ-C FAQ-C++ +
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : octobre 2006 Messages : 456 ![]() |
Merci pour le lien. J'ai fait exactement ce qui est dit et ça ne marche pas. Le code C du fichier dll que je veux obtenir est reparti en trois fichiers .c. L'étape
Code :
gcc -c -DBUILD_DLL file1.c file2.c file3.c -I C:\Tcl\include Par contre, l'étape Code :
gcc -shared -o file.dll -Wl,--out-implib,libtstdll.a file1.o file2.o file3.o Code :
file1.o:file1.c:(.text +0xcf): undefined reference to '_imp__Tcl_GetDoubleFromObj' Des idées sur l'origine de cette erreur ? |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Tu dois linker contre une librairie de Tcl, à priori tclx.y (il t'appartient de remplacer x et y par les bonnes valeurs).
Code :
gcc -shared -o file.dll -L C:\Tcl\lib -ltclx.y -Wl,--out-implib,libtstdll.a file1.o file2.o file3.o |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Inscription : octobre 2006 Messages : 456 ![]() |
C'était cela, maintenant, ça marche.
Merci |
|
|
00
|
|
|
#6 | ||||
|
Nouveau Membre du Club
![]() Camille GillotÉtudiant Inscription : septembre 2007 Messages : 47 ![]() |
Moi aussi j'ai un problème avec le linkage de ma dll mingw :
(la ligne de commande est celle de code::blocks) Code :
Code :
Merci |
||||
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Camille GillotÉtudiant Inscription : septembre 2007 Messages : 47 ![]() |
Excusez moi, ce n'était pas un problème de dll mais la stl de mingw ne supporte pas les wchar_t.
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2012 Messages : 3 ![]() |
Bonjour,
j'ai suivit les indications écrite sur ce forum mais il m'arrive une autre erreur, il me dit que je n'ai pas de fichier en entrée, J'ai écrit ces lignes dans une makefile, voila mes deux lignes de compilation TCLPYTHON= "C:\Program Files\tcl\lib\tclpython-4.1" gcc -c -DBUILD_DLL -c -mrtd -g -O2 tclpython.c tclthread.c -I "C:\Program Files\tcl\include\" tcl.h gcc -shared -o $(TCLPYTHON)\tclpython-$(TclPythonVersion)-$(PythonVersion).dll \ -L"C:\Program Files\tcl\include\" -l tcl.h -W1,--output-implib=libtstdll.a tclpython.o tclthread.o |
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Et quel est le message d'erreur ?
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : avril 2012 Messages : 3 ![]() |
message d'erreur :
gcc:erreur fatale pas de fichier à l'entrée |
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
C'est bien la première commande qui ne marche pas ?
Dans la ligne suivante, Code :
gcc -c -DBUILD_DLL -c -mrtd -g -O2 tclpython.c tclthread.c -I "C:\Program Files\tcl\include\" tcl.h Code :
gcc -c -DBUILD_DLL -mrtd -g -O2 -I "C:\Program Files\tcl\include\" tclpython.c tclthread.c |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : avril 2012 Messages : 3 ![]() |
Cela était bien une erreur sur la première ligne, mais je n'ai pas mis les .c en dernier sinon cela ne fonctionnais pas
il faut que je modifie les liens de mes fichiers maintenant, ce qui n'est pas vraiment évident vu que chaques fichiers renvoie vers d'autre .h Sauriez vous qu'elle est la différence lorsque l'on fais appel a des include entre : <io.h> et "io.h" |
|
|
00
|
|
|
#13 | |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com