在EXE和DLL中,FindResource的區別

2021-09-30 15:34:00 字數 1494 閱讀 4009

在exe和dll中,findresource的區別

以下的**在exe中,執行無誤。可是在dll中findresource返回的值就為0了,我用::getlasterror(),得出的值是1813,也就是取不到資源,這是為什麼?

bool extractfile(char *szzlibfile,dword    dwrid)

dwressize = sizeofresource(null, hrsrc);

hglobal = loadresource(null, hrsrc);

if(hglobal == null)

prsrc = lockresource(hglobal);

hfile = createfile( szzlibfile , generic_all, 0, null, create_always, file_attribute_normal, null);

if(hfile == invalid_handle_value)

if( writefile( hfile, prsrc, dwressize, &dwbyteswrite, null) == false)

closehandle(hfile);

mydbgprint("[extractfile] write %s file success\n",szzlibfile);

return true;

}

問題出在

findresource

的第乙個引數取得的

hinstance

控制代碼是exe

的hinstance

控制代碼,自然在其中也找不到在

dll中引入的

zlib

這個點陣圖id了

.同時sizeofresource,loadresource

中的第乙個引數也應該是

dll的控制代碼.

解決方法如下

:

bool extractfile(char *szzlibfile,dword    dwrid)

dwressize = sizeofresource( hinst , hrsrc);

hglobal = loadresource( hinst , hrsrc);

if(hglobal == null)

prsrc = lockresource(hglobal);

hfile = createfile( szzlibfile , generic_all, 0, null, create_always, file_attribute_normal, null);

if(hfile == invalid_handle_value)

if( writefile( hfile, prsrc, dwressize, &dwbyteswrite, null) == false)

closehandle(hfile);

return true;

}

LoadImage在dll與exe中的區別

hbitmap hbitmapnormal null hinstance hinstresource null find correct resource handle hinstresource afxfindresourcehandle makeintresource nbitmapnormal...

DLL匯出類,在EXE中呼叫delete時非法操作

現象 在exe中使用由動態庫匯出的類,在delete時非法操作。有其他模組 dll或exe 呼叫都非法。程式如下 include stdafx.h int main int argc,char argv dll庫 define dllexport declspec dllexport class d...

DLL和EXE的區別

動態鏈結庫 dynamic link library,縮寫為dll 是乙個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態鏈結庫檔案的副檔名一般是dll,也有可能是drv sys和fon,它和可執行檔案 exe 非常類似.區別dll中雖然包含了可執行 卻不能單獨執行,而應...