我正在使用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)无效 . 我见过很多线程,但没有任何帮助 . 我也试图列出资源,但我最终得到了一个太复杂的代码,我找不到问题 .

提前致谢 .

EDIT:

我单独尝试了这些行,但没有一个工作,每次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”时,属性尚未更改,这里它们是:

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