hello, je ne comprends pas pourquoi l'exécution de mon programme me donne systématiquement le message 'la mémoire 0x00000000 ne peut être lue'
après avoir créé un nouveau projet 'DLL' (appellons le A), je fabrique ma dll en 2 étapes:
1)-------------dans dll.h:-----------------
2)---------------dans dllmain.cpp:----------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else /* Not BUILDING_DLL */ # define DLLIMPORT __declspec (dllimport) #endif /* Not BUILDING_DLL */ DLLIMPORT void HelloWorld(); #endif /* _DLL_H_ */
-------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "dll.h" #include <windows.h> #include <iostream.h> DLLIMPORT void HelloWorld() { cout<<"bouh"; } BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved){ return TRUE; }
ensuite, je compile et copie le fichier .dll dans le répertoire où se trouve un autre projet B qui va faire appel à la dll et dans les paramètres de ce projet, j'indique le lien du .a (créé par le projet A)
dans le main du projet B, je tape dans le main:
je compile, ok, et systématiquement, j'ai l'erreur 0x0000000 à l'exécution (si je met pFuncHello( ); en commentaire, il n'y a plus d'erreur)
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 #include <iostream.h> #include <windows.h> int main(int argc, char *argv[]) { HMODULE hDLL = LoadLibrary("Projet1"); if(!hDLL) cout<<"no DLL"; typedef void (WINAPI * DLL_Function_HelloWorld) (); DLL_Function_HelloWorld pFuncHello = (DLL_Function_HelloWorld) GetProcAddress( hDLL, "HelloWorld" ); pFuncHello( ); system("PAUSE"); return 0; }
Ou me trompe-je?
Partager