FindResource在exe文件上给出错误1813

我过去3天一直在尝试这个,但我仍然无法使它工作。 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但没有任何作用,它仍然给我与以前相同的错误。 Web上的所有解决方案都是使用Visual Studio上的.RCresource.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/我曾经使用过它,并且可以满足我的需求。 无论如何,我不知道它目前的状态。

错误是正确的。 您的文件中没有"EXE"类型的资源。 当你说你没有.RC文件时,你自己这么说。 资源在.RC文件中定义,如果没有,则没有资源。 要添加资源ID为10的"EXE"类型的资源,您需要创建.RC文件,将其添加到项目中,然后说出来

 10 EXE "somefile" 

其中“somefile”是一些文件,其内容要用作资源数据。

如果您的IDE不支持.RC文件,那么您将无法通过IDE添加资源。 您必须通过后处理步骤以其他方式添加它们。

但重点是您收到错误“找不到资源类型”,因为您没有做任何事情来创建该类型的资源。 你有什么期望?