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 :

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;
 
}
main.h:

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__
Ensuite sans toucher à rien d'autre je compile.

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 :
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;
}
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)
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 ^^