Bonjour à tous !
Voilà j'éssais déséspérement de créer une DLL simple et reutiliser ses fonctions mais sans réussite...
j'ai suivi un tuto à la lettre.
Je vais tout expliquer :
Génération de la DLL (sous codeBlocks) :
Dabord je créer un nouveau projet de type dynamic link library appelé sdz avec le compilateur GCC.
Dans ce projet j'ai seulement deux fichier :
main.cpp :
main.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int __declspec (dllexport) addition(int entier1, int entier2) { return entier1 + entier2; }
Ensuite sans toucher à rien d'autre je compile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifndef __MAIN_H__ #define __MAIN_H__ int __declspec(dllimport) addition(int entier1, int entier2); #endif // __MAIN_H__
tout ce passe bien et ca me génrère 3 fichiers dans bin/release : libsdz.a, libsdz.def, sdz.dll
Utilisation de la DLL :
Ensuite je créer un nouveau projet de type console en C++ toujours avec gcc :
j'ai mon main.cpp :
J'ai copié mon main.h ainsi les trois fichiers généré par ma dll à la racinde de mon projet actuel (juste au cas ou)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <stdio.h> #include <stdlib.h> #include "main.h" int main(int argc, char *argv[]) { int resultat = 0; resultat = addition(3, 7); printf("Le resultat est %d\n", resultat); printf("Appuyez sur une touche pour continuer..."); getchar(); return 0; }
ensuite dans projet > build option > onglet linker setting je link libsdz.a.
et là je compile et je suis confronté à un :
||=== azaz, Release ===|
ld.exe||cannot find -lsdz|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|
et dans les rares fois ou ce méssage disparait (alors que ma lib est bien linké) je suis confronté à un :
||=== z, Release ===|
obj\Release\main.o:main.cpp: (.text.startup+0x1f)||undefined reference to `_imp___Z8additionii'|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|
Dans le tuto on me dit de "placez votre fichier dll.dll dans le même répertoire que votre exécutable"
Mais je n'ai généré aucun exécutables à aucun moments...
Merci d'avance à tous ceux qui voudrons bien aider ^^
Partager