Bonjour j'ai un problème pour charger une dll situé en ressource dans une autre dll, j'ai à présent ceci :
fichier .rc
librarydll BINARY "dllconstructeur.dll"
fichier .h
#define librarydll 1
fichier .c
static HGLOBAL hgbl;
static BYTE *pdata;
static HRSRC hrsrc;
DWORD len, v;
static HANDLE hfl;
GetModuleFileName(NULL,&chemindlltemp,MAX_PATH);
*(strrchr(chemindlltemp, '\\')+1)=0;
strcat(chemindlltemp,"Temp\\");
if( (_access(chemindlltemp, 0 )) == -1 )CreateDirectory(chemindlltemp,0);
strcat(chemindlltemp,"dllconstructeurtemp.dll");
hrsrc = FindResource(0, (LPCTSTR)librarydll, "BINARY");
if(hrsrc){
hgbl = LoadResource(0, hrsrc);
if(hgbl){
len = SizeofResource(0, hrsrc);
if(len == 3584){
hfl = CreateFile(
chemindlltemp,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hfl != INVALID_HANDLE_VALUE){
pdata = (BYTE*) LockResource(hgbl);
v = 0;
if(!WriteFile(hfl, pdata, len, &v, 0))strcat(errorlog,"Impossible d'écrire le fichier\n");
CloseHandle(hfl);
FreeResource(hgbl);
if(len == v){
hModDll = LoadLibrary(chemindlltemp);
if(!hModDll)strcat(errorlog,"Impossible de charger la dll\n");
}else{
//DeleteFile(chemindlltemp);
if(v==0)strcat(errorlog,"la dll est vide\n");
else strcat(errorlog,"la dll n'a pas la taille attendue\n");
}
}else strcat(errorlog,"la dll n'a pas pu être créé\n");
}else strcat(errorlog,"la dll ressource n'a pas la taille attendue\n");
}else strcat(errorlog,"la dll ressource n'a pas pu être chargée\n");
}else strcat(errorlog,"la dll ressource n'a pas été trouvée\n");
sauf que je suis bloqué au premier pas "la dll ressource n'a pas été trouvée" je pense que j'ai pourtant bien définit le type de ressource et je n'ai pas d'erreur de ressources.
qu'est-ce qui cloche ?
