VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 734|回复: 9

为什么DLL加载资源文件失败

[复制链接]
16_avatar_middle
最佳答案
0 
在线会员 发表于 2018-2-3 21:40:05 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 东关之南 于 2018-2-3 21:49 编辑

如题
为什么DLL加载资源文件失败

HRSRC        hRsrc=NULL;
HGLOBAL        hGbl=NULL;
DWORD        dwResSize=0;

hRsrc=FindResource(NULL,MAKEINTRESOURCE(IDR_DAT1),"DAT");
hGbl=LoadResource(NULL,hRsrc);
dwResSize=SizeofResource(NULL,hRsrc);
CopyMemory(byData,hGbl,dwResSize);
GlobalFree(hRsrc);





上一篇:VC驿站-(23)-文件夹的基本操作 里面代码的一个问题
下一篇:请问vs2017mfc类库中没有CMenu基类,请问怎么办?谢谢!
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2018-2-3 21:50:56 | 显示全部楼层
@Syc 拜托了
01_avatar_middle
最佳答案
8 
online_admins 发表于 2018-2-3 21:54:16 | 显示全部楼层

楼主应该是没有进行资源的切换,因为默认资源查找的主题是EXE文件,所以查找之前要先切换到DLL才行!
楼主不妨看看这两篇文章,肯定可以解决你的问题:

在DLL中使用资源(一):https://www.cctry.com/thread-5516-1-1.html
在DLL中使用资源(二):https://www.cctry.com/thread-5517-1-1.html
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2018-2-4 11:41:22 | 显示全部楼层
admin 发表于 2018-2-3 21:54
楼主应该是没有进行资源的切换,因为默认资源查找的主题是EXE文件,所以查找之前要先切换到DLL才行!
楼 ...

    AFX_MANAGE_STATE(AfxGetStaticModuleState());
        HRSRC        hRsrc=NULL;
        HGLOBAL        hGbl=NULL;
        DWORD        dwResSize=0;

        hRsrc=FindResource(NULL,MAKEINTRESOURCE(IDR_DAT1),"DAT");
        hGbl=LoadResource(NULL,hRsrc);
        dwResSize=SizeofResource(NULL,hRsrc);
        CopyMemory(byRandomData,hGbl,dwResSize);
        GlobalFree(hRsrc);
是这样吗?
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2018-2-4 11:56:01 | 显示全部楼层
我按照两篇文章中说的还是不行啊
@Syc
能说的详细点吗
01_avatar_middle
最佳答案
8 
online_admins 发表于 2018-2-4 12:31:02 | 显示全部楼层
东关之南 发表于 2018-2-4 11:56
我按照两篇文章中说的还是不行啊
@Syc
能说的详细点吗

代码改成什么样子了,资源切换了吗?代码贴上来看看
16_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2018-2-4 19:33:11 | 显示全部楼层
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
        HRSRC        hRsrc=NULL;
        HGLOBAL        hGbl=NULL;
        DWORD        dwResSize=0;

        hRsrc=FindResource(NULL,MAKEINTRESOURCE(IDR_DAT1),"DAT");
        hGbl=LoadResource(NULL,hRsrc);
        dwResSize=SizeofResource(NULL,hRsrc);
        CopyMemory(byRandomData,hGbl,dwResSize);
        GlobalFree(hRsrc);
01_avatar_middle
最佳答案
8 
online_admins 发表于 2018-2-4 22:18:44 | 显示全部楼层
东关之南 发表于 2018-2-4 19:33
AFX_MANAGE_STATE(AfxGetStaticModuleState());
        HRSRC        hRsrc=NULL;
        HGLOBAL  ...

FindResource、LoadResource、SizeofResource
几个函数的返回值都判断下,看看到底哪个函数执行失败了
97_avatar_middle
最佳答案
0 
在线会员 发表于 2018-2-5 09:21:31 | 显示全部楼层
不是应该还有个 LockResource吗
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-11-20 18:42

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表