[Suite à cette discussion]
Bonjour,
Avant de vous envoyer ce message j'ai suivi les indications, mais malheureusement cela ne fonctionne pas pour tout le monde. Je pense qu'il doit s'agir d'une erreur de saisie. Mais à force de lire et relire, on ne voit plus rien.
Voici le code:
header: my_lib.h
Voici le code de la dll my_lib.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifdef MY_LIB_DEF // inside DLL #define MY_LIB __declspec(dllexport) #else #define MY_LIB __declspec(dllimport) #endif class MY_Class { private: char* filename; int fd; public: MY_Class(); ~MY_Class(); int openMYfile(char* fname, int mode); int closeMYfile(); }; extern "C" MY_LIB MY_Class* new_MYCLASS();
et enfin le code du prog principal (test.cpp)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #define MY_LIB_DEF #include "my_lib.h" /* CONSTRUCTEUR */ MY_Class::MY_Class(){ . . . } /* DESTRUCTEUR */ MY_Class::~MY_Class() { . . . } int MY_Class::openMYfile (char* fname, int mode) { return 0; } int MY_Class::closeMYfile () { return 0; } /* FOR USAGE VIA DLL */ MY_Class* new_MYCLASS() { return new MY_Class(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include "MY_lib.h" int main(int argc, char* argv[]) { //LoadLibrary("MY_lib.dll" ); // ne fonctionne ni sans ni avec le ligne printf("INITIALISATIONS ... "); MY_Class* TheObject = ::new_MYCLASS(); printf(" OK\n"); TheObject->openMYfile("C:/Dev/cpp/test.txt", 0); TheObject->closeMYfile(); return 0; }
Lors de la compilation (avec mingw32), les erreurs suivantes sont retournées:
Je suis sec. Merci pour votre aide...C:\Dev\cpp\mingw32-make.exe -f makefile
g++ -c MY_lib.cpp -o MY_lib.o
g++ -shared -o MY_lib.dll MY_lib.o
g++ -o test.exe test.cpp
C:\Users\...\Temp/cc1oVLPB.o:test.cpp: (.text+0x37): undefined reference to `_imp__new_MYCLASS'
C:\Users\...\Temp/cc1oVLPB.o:test.cpp: (.text+0x76): undefined reference to `MY_Class::openMYfile(char*, int)'
C:\Users\...\Temp/cc1oVLPB.o:test.cpp: (.text+0xb0): undefined reference to `MY_Class::closeMYfile()'
collect2: ld returned 1 exit status
mingw32-make.exe: *** [TEST] Error 1
Partager