FindResource Api为DLL中的Text文件提供错误1813

FindResource Api gives error 1813 for Text file in a DLL

本文关键字:错误 1813 文件 Text Api DLL 中的 FindResource      更新时间:2023-10-16

我开发了一个动态库,在dll中我添加了一个资源文本文件和其他用于其他目的的代码,然后通过一个可执行文件动态加载dll,当调用到FindResource API时,它总是返回NULL。当可执行文件在单独的文件夹中时,动态库文件夹是单独的。我不明白为什么它不起作用。代码:>HRSRC hRes=FindResource(0,MAKENTRESOURCE(IDR_XYZ_ABC1),"XYZ_ABC");<

FindResource的第一个参数是要从中加载的句柄。所以它可能是你的动态dll句柄。

错误代码1813转换为

在映像文件中找不到指定的资源类型。

NULL作为第一个参数传递给FindResource被证明意味着:

如果此参数为NULL,则函数将搜索用于创建当前进程的模块。

如果你想从动态加载到进程中的图像中加载资源,你必须将模块的句柄传递给FindResource:

HMODULE hMod = LoadLibrary("MyResources.dll");
HRSRC hRes = FindResource(hMod, MAKEINTRESOURCE(IDR_XYZ_ABC1), "XYZ_ABC");
// ...

如果.dll仅包含资源,则可能需要使用LoadLibraryEx。它允许您指定其他加载选项,允许您加载仅由资源组成的库,而不包含入口点。