【问题标题】:FindResource Api gives error 1813 for Text file in a DLLFindResource Api 为 DLL 中的文本文件提供错误 1813
【发布时间】:2013-08-30 04:32:22
【问题描述】:
我开发了一个动态库,在 dll 中我添加了一个资源文本文件和其他代码用于其他目的,然后通过一个可执行文件我动态加载 dll,当调用到 FindResource API 时它总是返回 NULL。虽然可执行文件在单独的文件夹中,但动态库文件夹是单独的。我不明白为什么它不起作用。
代码:
>
HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_XYZ_ABC1), "XYZ_ABC");
【问题讨论】:
标签:
c++
windows
visual-studio-2010
winapi
visual-c++
【解决方案1】:
错误代码 1813 转换为
在图片文件中找不到指定的资源类型。
将NULL 作为第一个参数传递给FindResource 被记录为:
如果此参数为NULL,则函数搜索用于创建当前进程的模块。
如果您想从动态加载到进程中的图像加载资源,您必须将模块的句柄传递给FindResource:
HMODULE hMod = LoadLibrary("MyResources.dll");
HRSRC hRes = FindResource(hMod, MAKEINTRESOURCE(IDR_XYZ_ABC1), "XYZ_ABC");
// ...
如果您的 .dll 仅包含资源,您可能希望改用 LoadLibraryEx。它允许您指定其他加载选项,允许您加载仅由资源组成的库,没有入口点。
【解决方案2】:
FindResource 的第一个参数是要加载的句柄。所以它可能是你的动态 dll 句柄。