如何从.dll中提取资源文件 - Visual Studio 2013

时间:2015-02-11 20:01:06

标签: c++ visual-c++

我正在使用visual studio 2013,我正在创建一个dll文件,将其中嵌入的可执行文件提取到一个目录中。首先,我将.exe文件作为资源导入,并将类型更改为“Application”。我可以在解决方案资源管理器中看到embed.exe位于“源文件”下。自动创建了2个新文件:Project.rc和resource.h。 .rc文件包含以下行:

IDR_APPLICATION1        Application             "embed.exe"

.h包括:

#define IDR_APPLICATION1                101

问题是以下功能失败

hrsrc = FindResource(NULL, (LPCWSTR)IDR_APPLICATION1, RT_RCDATA);

GetLastError()返回1813,这意味着,根据我访问的先前线程,类型(RT_RCDATA)无效。我见过很多线程,但没有任何帮助。我也试图列出资源,但我最终得到了一个太复杂的代码,我找不到问题。

提前致谢。

修改

我单独尝试了这些行,但没有一个工作,每次GetLastError()返回1813。

hrsrc = FindResource(NULL, (LPCWSTR)IDR_APPLICATION1, (LPCWSTR)L"Application");
hrsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_APPLICATION1), _T("Application"));
hrsrc = FindResource(NULL, (LPCWSTR)IDR_APPLICATION1, _T("Application")); //mix of both

以下是3个可能的问题:

1 - FindResource()的第一个参数(参数)是应用程序的实例,但我正在编写DLL文件,因此我将其设置为NULL。运行应用程序的.exe文件没有“Application”类型的资源,但.dll文件却没有。

2 - 名为“embed.exe”的资源被自动添加到“Sources”过滤器/文件夹中,也许它应该位于“Resources”过滤器/文件夹中?

3 - 当我从解决方案资源管理器中右键单击“embed.exe”时,属性尚未更改,这里它们是:

从构建中排除:(空)
内容:(空)
项目类型:不参与构建

0 个答案:

没有答案