无法为DLL加载资源文件

时间:2019-01-14 07:42:49

标签: visual-c++ dll

下面是我从资源加载文件的代码

    void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
    HMODULE handle = ::GetModuleHandle(NULL);
    HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name),MAKEINTRESOURCE(type));
    HGLOBAL rcData = ::LoadResource(handle, rc);
    size = ::SizeofResource(handle, rc);
    data = static_cast<const char*>(::LockResource(rcData));
}

如果只是一个应用程序,则此代码可以完美地工作。当将相同的代码用作DLL时,我在rc中得到了空值,这是在FindResource之后发布的。

我已经在资源丰富的文件中定义了符号,如下所示:

#define TEXTFILE        256
#define IDR_MYTEXTFILE  105

我还需要添加的文件在rc文件中定义:

IDR_MYTEXTFILE TEXTFILE "C:/Docs/Lib.XML"

正如我之前提到的,当该代码将其应用程序转换为DLL时,它可以完美地工作。

LoadFileInResource函数的调用如下:

LoadFileInResource(IDR_MYTEXTFILE, TEXTFILE, size, data);

0 个答案:

没有答案