我将.DLL作为资源加到了工程中。ID:IDR_DATANEW1 TYPE:datanew。现在要释放资源,程序如下:
HANDLE f;
f=CreateFile( "D:\\maths.dll",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
LPVOID IoBuffer = (LPVOID)::LoadResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Data"));
DWORD dwResource = SizeofResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Datanew"));
DWORD BytesRead;
WriteFile(f,IoBuffer,dwResource,&BytesRead,NULL);
程序运行到
LPVOID IoBuffer = (LPVOID)::LoadResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Data"));
的时候IoBuffer的值为0。最后写成的文件也就是0kb。请问这是怎么回事?ID AND TYPE都没有问题,大小写也一样
HANDLE f;
f=CreateFile( "D:\\maths.dll",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
LPVOID IoBuffer = (LPVOID)::LoadResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Data"));
DWORD dwResource = SizeofResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Datanew"));
DWORD BytesRead;
WriteFile(f,IoBuffer,dwResource,&BytesRead,NULL);
程序运行到
LPVOID IoBuffer = (LPVOID)::LoadResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Data"));
的时候IoBuffer的值为0。最后写成的文件也就是0kb。请问这是怎么回事?ID AND TYPE都没有问题,大小写也一样
[email protected]
RT_ANICURSOR
RT_ANIICON
RT_BITMAP
RT_CURSOR
RT_DIALOG
RT_FONT
RT_FONTDIR
RT_GROUP_CURSOR
RT_GROUP_ICON
RT_HTML
RT_ICON
RT_MENU
RT_MESSAGETABLE
RT_RCDATA
RT_STRING
RT_VERSIONFindResource的第三个参数从上面挑一个?
Accelerator
Data(自己建立的)
Dialog
Icon
Menu
String Table
LPVOID IoBuffer = (LPVOID)::LoadResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Data"));
后IoBuffer的地址是:0x000000000
执行完
DWORD dwResource = SizeofResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),(LPCTSTR)"Datanew"));
dwResource得值是0
[email protected]
HINSTANCE hi;
//hi = ::LoadLibrary("dir\\test.dll"); //如果你想从别的module加载资源 handle = ::FindResource(AfxGetApp()->m_hInstance/*你的程序的HINSTANCE*/,
MAKEINTRESOURCE(IDR_MAINFRAME),
(LPCTSTR)RT_GROUP_ICON);
LPVOID IoBuffer = (LPVOID)::LoadResource(NULL,
FindResource(NULL,MAKEINTRESOURCE(IDR_DATANEW1/*你Resource 的ID*/),RT_RCDATA));
//改成RT_RCDATA可以得到IoBuffer