关于在VC中的动态库dll里的自定义资源的添加和读取
我做了一个dll,同时在库中想把一些文件做为dll的资源编译到一起来使用,但现在的情况是找不到资源,会出错。
1、在建立时,工程的属性是使用标准 Windows 库,配置类型是(动态库(.dll));
2、我自定义了一个资源,资源类型我取名为XML,同时我导入了一个文件,文件的ID为:IDR_FPGA1
3、我在需要读取这个资源文件的地方的代码如下:
INT Card::LoadFPGAData( PBYTE pData,UINT FPGAFunc)
{
UINT nIDResource;
// 将资源ID转成资源名称
nIDResource = IDR_FPGA1;
LPCTSTR szResourceName = MAKEINTRESOURCE(nIDResource);
// 资源的类型
LPCTSTR szResourceType = "XML";
// 查找资源句柄
hRes = FindResource(NULL, MAKEINTRESOURCE(nIDResource),"XML");
// 获得资源数据的句柄
HGLOBAL hResData;
if (!hRes || !(hResData = LoadResource(hInstance1,hRes)))
{
DWORD ret;
ret = GetLastError();
char str[256];
sprintf(str,"ret = %d",ret);
OutputDebugString("\n -------------GetLastError:!!!!!!");
OutputDebugString( str);
OutputDebugString("\n -------------LoadResource Failed!!!!!!");
return -1;
};
OutputDebugString("\n -------------LoadResource Success!!!!!!");
// 资源数据的大小
INT dwSize = SizeofResource(hInstance1,hRes);
if(pData == NULL)
{
return dwSize;
}
// 资源加锁
PBYTE pSrc = (PBYTE)LockResource(hResData);
if (!pSrc)
{
FreeResource(hResData);
return -1;
};
// 复制数据
CopyMemory(pData,pSrc,dwSize);
// 释放资源
FreeResource(hResData);
return dwSize;
}
上面是读取这个资源文件的函数代码,其间,我也怀疑了HINSTANCE没有获取,后来我也获取了HINSTANCE,但还是错误。
第一个出现错误的地方就在hRes = FindResource(NULL, MAKEINTRESOURCE(nIDResource),"FPGA");这里就已经获取失败了。
请各位高手帮忙解决一下这个问题。