我正在使用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”时,属性尚未更改,这里它们是:
从构建中排除:(空)
内容:(空)
项目类型:不参与构建