DLL作为资源添加到MFC后,怎么释放,怎么删除,跪求大大

时间:2022-12-20 04:59:00
小弟刚学,不懂啊,跪求大大
最好是源码。。。多谢了啊!!!

13 个解决方案

#1


FindResource然后Load
你是指删除释放的文件?
bat delete掉即可

#2


加载后,释放到本地

BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)    
{    
// 资源大小    
DWORD   dwWrite=0;          

// 创建文件    
HANDLE  hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,    
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);    
if ( hFile == INVALID_HANDLE_VALUE )    
{    
return FALSE;    
}    

// 查找资源文件中、加载资源到内存、得到资源大小    
HRSRC   hrsc =  FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);    
HGLOBAL hG = LoadResource(NULL, hrsc);    
DWORD   dwSize = SizeofResource( NULL,  hrsc);    

// 写入文件    
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);       
CloseHandle( hFile );    
return TRUE;    

#3


引用 2 楼 xiaoc1026 的回复:
加载后,释放到本地

C/C++ code


BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)    
{    
    // 资源大小    
    DWORD   dwWrite=0;          

    // 创建文件    
    HANDLE……

这三个参数怎么写?CString strFileName是XXX.dll?WORD wResID是ID?CString strFileType是DLL?

#4


引用 3 楼 a3308802 的回复:
引用 2 楼 xiaoc1026 的回复:
加载后,释放到本地

C/C++ code


BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
{
// 资源大小
DWORD dwWrite=0;

// 创建文件
HANDLE……

这三个参数怎么写?CStrin……


ReleaseRes("mydll.dd", DLL_ID, "dll");

释放路径,资源ID,文件类型

#5


引用 4 楼 xiaoc1026 的回复:
引用 3 楼 a3308802 的回复:
引用 2 楼 xiaoc1026 的回复:
加载后,释放到本地

C/C++ code


BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
{
// 资源大小
DWORD dwWrite=0;

// 创建文件
HANDL……

多谢 测试成功!! 但我释放之后还要删除,怎么删除那个DLL。。。解决了 马上结帖子 谢谢!!

#6


RemoveFile

#7


都成为你程序的资源了,你想删除?

如果释放出来的DLL你不会删除, 那我就无语了. 

#8


多谢 测试成功!! 但我释放之后还要删除,怎么删除那个DLL。。。解决了 马上结帖子 谢谢!!
===============
 DeleteFile删除文件不就行了。

#9


直接删除不行(它在某个文件夹下是受保护的)。我要粉碎它。。求粉碎文件夹代码,求指点啊。。跪求。。。

#10


不对,是粉碎文件代码。。。有的话,谢谢了!!

#11


用完后
FreeLibrary(hLib);

#12


先freelibrary,再deletefile

#13


引用 9 楼 a3308802 的回复:
直接删除不行(它在某个文件夹下是受保护的)。我要粉碎它。。求粉碎文件夹代码,求指点啊。。跪求。。。

删除如果不行,粉碎肯定也不行。是不是DLL没有释放,造成不能删除啊?

#1


FindResource然后Load
你是指删除释放的文件?
bat delete掉即可

#2


加载后,释放到本地

BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)    
{    
// 资源大小    
DWORD   dwWrite=0;          

// 创建文件    
HANDLE  hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,    
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);    
if ( hFile == INVALID_HANDLE_VALUE )    
{    
return FALSE;    
}    

// 查找资源文件中、加载资源到内存、得到资源大小    
HRSRC   hrsc =  FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);    
HGLOBAL hG = LoadResource(NULL, hrsc);    
DWORD   dwSize = SizeofResource( NULL,  hrsc);    

// 写入文件    
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);       
CloseHandle( hFile );    
return TRUE;    

#3


引用 2 楼 xiaoc1026 的回复:
加载后,释放到本地

C/C++ code


BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)    
{    
    // 资源大小    
    DWORD   dwWrite=0;          

    // 创建文件    
    HANDLE……

这三个参数怎么写?CString strFileName是XXX.dll?WORD wResID是ID?CString strFileType是DLL?

#4


引用 3 楼 a3308802 的回复:
引用 2 楼 xiaoc1026 的回复:
加载后,释放到本地

C/C++ code


BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
{
// 资源大小
DWORD dwWrite=0;

// 创建文件
HANDLE……

这三个参数怎么写?CStrin……


ReleaseRes("mydll.dd", DLL_ID, "dll");

释放路径,资源ID,文件类型

#5


引用 4 楼 xiaoc1026 的回复:
引用 3 楼 a3308802 的回复:
引用 2 楼 xiaoc1026 的回复:
加载后,释放到本地

C/C++ code


BOOL CUtility::ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
{
// 资源大小
DWORD dwWrite=0;

// 创建文件
HANDL……

多谢 测试成功!! 但我释放之后还要删除,怎么删除那个DLL。。。解决了 马上结帖子 谢谢!!

#6


RemoveFile

#7


都成为你程序的资源了,你想删除?

如果释放出来的DLL你不会删除, 那我就无语了. 

#8


多谢 测试成功!! 但我释放之后还要删除,怎么删除那个DLL。。。解决了 马上结帖子 谢谢!!
===============
 DeleteFile删除文件不就行了。

#9


直接删除不行(它在某个文件夹下是受保护的)。我要粉碎它。。求粉碎文件夹代码,求指点啊。。跪求。。。

#10


不对,是粉碎文件代码。。。有的话,谢谢了!!

#11


用完后
FreeLibrary(hLib);

#12


先freelibrary,再deletefile

#13


引用 9 楼 a3308802 的回复:
直接删除不行(它在某个文件夹下是受保护的)。我要粉碎它。。求粉碎文件夹代码,求指点啊。。跪求。。。

删除如果不行,粉碎肯定也不行。是不是DLL没有释放,造成不能删除啊?