Dll LoadLibrary --> Erreur

mortiis Messages postés 120 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 9 mars 2008 - 24 mars 2004 à 04:37
mortiis Messages postés 120 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 9 mars 2008 - 25 mars 2004 à 04:49
Bonjour à tous

J'ai fait un prog qui devrais utiliser une dll pour faire un test j'ai fait un dll qui me fait afficher un MessageBox.

Le problème est que quand j'apelle la fonction LoadLibrary
elle me retourne toujours NULL.

Il me semble faire tous ce qu'il faut, mais rien à faire, le retour est toujours NULL.

Merci de votre aide et pour votre temps.

Voici mon code :

/****************/
//Le code du dll//
/****************/
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
 )
{
    return TRUE;
}

extern "C" __declspec(dllexport) bool lMain(int nNbParam,char** pParam)
{
    if(nNbParam != 2)
       return false;
    MessageBox(NULL,pParam[0],pParam[1],MB_OK);
    return true;
}

/***************************/
//Le code dans mon prog.exe//
/***************************/
HMODULE hLoadLib = LoadLibrary("msg.dll");
if(hLoadLib == NULL)
{
    MessageBox(NULL,"Erreur de chargement du dll","LoadDllError",MB_OK);
    return NULL;
}

typedef char* (*LMAIN)(int,char**);
LMAIN lmain = (LMAIN)GetProcAddress(hLoadLib,"lMain");
if(lmain == NULL)
{
    MessageBox(NULL,"Erreur fnct","LoadFnctError",MB_OK);
    return NULL;
}

lmain(nNbParam,pParam);
FreeLibrary(hLoadLib);


Merci de votre aide et pour votre temps.

5 réponses

mortiis Messages postés 120 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 9 mars 2008
24 mars 2004 à 04:52
Bonjour à tous

Désolé j'ai fait une erreur dans la retranscription de mon code
La ligne :
typedef char* (*LMAIN)(int,char**);

devrait ëtre :
typedef bool (*LMAIN)(int,char**);
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 mars 2004 à 09:14
Mets le chemin complet pour tester, tu sauras si vient de cela:
hLoadLib = LoadLibrary("D:\\msg.dll"); par exemple

ciao...
BruNews, Admin CS, MVP Visual C++
0
mortiis Messages postés 120 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 9 mars 2008
24 mars 2004 à 22:49
Bonjour à tous

Merci beaucoup cela fonctionne.

mais j'ai créé une autre lib et pour la charger avec LoadLibrairy, je n'ai inscrit que le chemin relatif et non le path complet et cela a fonctionné.

Alors je me demande pourquoi cela fonctionne avec cette dll et non avec la dll msg.dll , pourtant je les ai créé de la même façon.

J'aimerais pouvoir spécifier le chemin relatif plutot que le path complet, cela éviterais de modifier le code chaque fois que l'on change de partition ou d'ordinateur qui aurait des lettres de lecteur logique différent.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 mars 2004 à 23:58
Bien entendu avec LoadLibrary on ne met que le nom de la dll en general, pour cela tu installes la dll soit dans un dossier connu dans les variables d'environnement soit le plus simple dans le dossier de exe. Assure ta currentDirectory par un SetCurrentDirectory la ou tu te trouves avant appel de LoadLibrary.

ciao...
BruNews, Admin CS, MVP Visual C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortiis Messages postés 120 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 9 mars 2008
25 mars 2004 à 04:49
Bonjour à tous

Merci pour le truc de SetCurrentDirectory

Ce que je fait c'est que mes dll sont dans un autre répertoire
et je fait un SetCurrentDirectory au début de l'exécution de mon prog et avec un GetCurrentDirectory et un peut de manipulation de chaine, je retrouve le path exact d'o:u est le dll que j'ai de besoin.

cela fonctionne bien

Encore merci pour ton aide.
0
Rejoignez-nous