Bonjour ;
Je m'interesse depuis peut au bibliotheque a chargement explicite.
Cependant meme en aillant consulter plusieurs tutos je n'arrive pas a
charger correctement ma .dll. la raison pour laquelle j'ai choisit ce
proceder pour stocker mes fonctions et classes n'est pas trivial c'est
necessaire pour le programme que je realise (mais je n'en suis qu'a
l'apprentissage).
J'ai essayer plusieurs technique dont celle ci qui est censer fonctionner :
la .dll est charger correctement au prealable avec "LoadLibrary()"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 typedef bool(*type_lua_initializer)(lua_State*); type_lua_initializer lua_initializer; lua_initializer = (type_lua_initializer)GetProcAddress(library, "loadInLua"); if(lua_initializer == NULL) { #ifdef REPORT_TESTING report << "WARNING :\nloadInLua not found in " << temp_string << "\n;\n"; #endif } else { // cast initializer to its proper type and use }
mais la fonction "loadInLua()" n'est jamais charger malgre tout mes essai.
La focntion "loadInLua()" : n'est pour le moment rien d'autre que :
petite explication sur l'idee ici, en faite je charge une bibliotheque
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 bool DLL_EXPORT loadInLua(lua_State* stateL) { return true; }
depuis une fonction avec le nom de la .dll comme parametre puis j'appelle
la fonction (qui devras etre dans tout les .dll du meme type)
permettant d'introduire les nouvelles fonctions dans
l'environnement lua. Naturellement j'essai de charger la .dll a
l'execution et non pas a la compilation.
A oui et j'ai aussi essayer :
Mais cette fonction n'as jamais ete appeler malgre tout mes tests.
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 BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpvReserved) { MessageBox(NULL, "event de la DLL", "DLL de test", MB_OK); switch(dwReasonForCall) { case DLL_PROCESS_ATTACH: MessageBox(NULL, "Chargement de la DLL", "DLL de test", MB_OK); break; case DLL_PROCESS_DETACH: MessageBox(NULL, "Dechargement de la DLL", "DLL de test", MB_OK); break; } return TRUE; }
Je vous remercie d'avance pour l'aide que vous pourrez m'apporter
Partager