过去三天我一直在尝试这个方法,但仍然无法使其工作。 WINAPI FindResource
函数抛出错误 1813:这意味着未找到资源类型。我使用的是 eclipse,因此没有 .RC 文件或 resource.h 文件,因此我使用 LoadLibraryA
加载了 exe 文件,然后在 FindResourceA< 中使用了
。这是我的代码:HANDLE
/
HRSRC hRsrc;
HMODULE hExe;
/** Loading resource file in the program */
if (!(hExe = LoadLibraryA(TEXT(filename)))) {
printf("Cannot load resource error: %lu \n", GetLastError());
return 0;
}
printf("Resource file %s is loaded to the program \n", filename);
/** Finding resource */
if (!(hRsrc = FindResourceA(hExe, MAKEINTRESOURCE(10), "EXE"))) {
printf("Cannot find resource error: %lu \n", GetLastError());
return 0;
}
puts("Resource found");
现在,据我了解,MAKEINTRESOURCE(10)
让我们可以定义自定义资源。这是正确的还是我只是误会了?在资源类型中,我尝试给出“EXE”“BIN”“Exehead”和RT_RCDATA
但没有任何效果,并且它仍然给我带来与以前相同的错误。网上的所有解决方案都是在 Visual Studio
上使用 .RC
和 resource.h
文件,有什么可以与 eclipse 一起使用吗?谢谢
最佳答案
要从二进制文件加载特定资源,您需要知道资源的类型及其 ID。
如果其中之一或两者都不知道,您可以使用函数 EnumResourceTypes()
和/或 EnumResourceNames()
来查找。
可以在此处找到有关如何使用 EnumResourceTypes()
的示例:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648008%28v=vs.85%29.aspx#_win32_Creating_a_Resource_List
更新:
如果 MS 提供的资源编辑器不可用,此免费工具可能会有所帮助:http://www.resedit.net/我曾经使用它并满足我的需要。反正我不知道它现在的状态。
关于c++ - FindResource 在 exe 文件上给出错误 1813,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14909101/