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 :
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
}
la .dll est charger correctement au prealable avec "LoadLibrary()"
mais la fonction "loadInLua()" n'est jamais charger malgre tout mes essai.

La focntion "loadInLua()" : n'est pour le moment rien d'autre que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
bool DLL_EXPORT loadInLua(lua_State* stateL)
{
    return true;
}
petite explication sur l'idee ici, en faite je charge une bibliotheque
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 :
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;
}
Mais cette fonction n'as jamais ete appeler malgre tout mes tests.

Je vous remercie d'avance pour l'aide que vous pourrez m'apporter