在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中雖然包含了可執行 卻不能單獨執行,而應...