c++ - FindResource 在 exe 文件上给出错误 1813

标签 c++ c winapi embedded-resource

过去三天我一直在尝试这个方法,但仍然无法使其工作。 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 上使用 .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/我曾经使用它并满足我的需要。反正我不知道它现在的状态。

关于c++ - FindResource 在 exe 文件上给出错误 1813,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14909101/

相关文章:

c - (生命游戏)如何在不检查矩阵外部的情况下循环遍历矩阵的外层,同时检查邻居?

c++ - 是否可以使您自己的 winapi 函数(如 getpixel)在 Windows 上工作?

C++ -- Win32 API、GUI 的东西

c++ - 类外的成员函数定义

c++ - 如何定义使用模板类但没有该类的所有参数的模板函数?

c++ - boost locale c++ - 了解基础知识

windows - 多线程:事件驱动与消息驱动

c++ - 如何防止不同插件中出现重复的资源 ID?

c - 如何运行我在另一台计算机上编写的 c 程序

C 服务器和客户端 - 段错误并显示垃圾