C++ FindResource失败
我有一段这样的代码C++ FindResource失败,c++,windows,sfx,C++,Windows,Sfx,我有一段这样的代码 IDB_PNG1 PNG "images\\list-back.png" HRSRC hrsrc = FindResource(module, MAKEINTRESOURCE(IDB_PNG1), TEXT("PNG")); 这很好, 但我不能使它工作的任何变种如下 hrsrc = ::FindResource(module, L"images\\list-back.png", L"PNG"
IDB_PNG1 PNG "images\\list-back.png"
HRSRC hrsrc = FindResource(module, MAKEINTRESOURCE(IDB_PNG1), TEXT("PNG"));
这很好,但我不能使它工作的任何变种如下
hrsrc = ::FindResource(module, L"images\\list-back.png", L"PNG");
hrsrc = ::FindResource(module, L"images\\list-back", L"PNG");
hrsrc = ::FindResource(module, L"list-back.png", L"PNG");
hrsrc = ::FindResource(module, L"list-back", L"PNG");
GetlastError返回0x00000716在映像文件中找不到指定的资源名称。使用字符串搜索的正确字符串格式/方式是什么
编辑:.rc将生成并包含.html和.png文件。我希望能够找到并加载该文件,而无需重新编译exe。我需要能够以某种方式在.html中识别.png在使用什么,在exe中,我将接收路径/id,而不是FindResource并加载。可以这样做吗?RCDATA行中的第一个条目是名称(或ID)。最后一个条目只是“资源编译器应该使用什么来创建此条目”-该名称不存储在可执行文件中
FOO RCDATA "images\\list-back.png"
...
::FindResource(module, L"FOO", RT_RCDATA);
RCDATA行中的第一个条目是名称(或ID)。最后一个条目只是“资源编译器应该使用什么来创建此条目”-该名称不存储在可执行文件中
FOO RCDATA "images\\list-back.png"
...
::FindResource(module, L"FOO", RT_RCDATA);
此外,您可以使用字符串ID而不是数字ID存储资源,如下所示:
list back PNG“图像\\list back.PNG”
那么你确实可以做到:
hrsrc=::FindResource(模块,L“list back”,L“PNG”)代码>
这比Erik提供的解决方案效率低,但如果您试图从静态库访问某些资源,而资源本身在稍后阶段嵌入到DLL/EXE中,则更易于管理。(您不必知道数字ID,只需在模块中商定符号名称即可)此外,您可以使用字符串ID而不是数字ID存储资源,如下所示:
list back PNG“图像\\list back.PNG”
那么你确实可以做到:
hrsrc=::FindResource(模块,L“list back”,L“PNG”)代码>
这比Erik提供的解决方案效率低,但如果您试图从静态库访问某些资源,而资源本身在稍后阶段嵌入到DLL/EXE中,则更易于管理。(您不必知道数字ID,只需在模块中商定符号名称即可)不起作用,而且对我来说也没有任何用处,因为我无法获取IDB_PNG1字符串或int。我在回调中接收图像\\list-back.png以供参考resource@cprogrammer:使用RCDATA,它就会工作。用于创建资源的文件名未存储在资源表中-名称/标识符为。我仍然必须使用MAKEINTRESOURCE(FOO),不能与“FOO”一起使用。至少当资源位于dll中且调用位于exe中时。我用PEExplorer查看过,你是对的,路径没有存储在资源表中-这是一条死胡同,但我需要找到一种方法来链接.rc中的资源(将生成rc),使我能够从exe中“找到”该资源(无需重新编译exe)。不起作用,而且对我来说没有任何用处,因为我无法获取IDB_PNG1字符串或int。我在回调中接收到图像\\list-back.png,以便resource@cprogrammer:使用RCDATA,它就会工作。用于创建资源的文件名未存储在资源表中-名称/标识符为。我仍然必须使用MAKEINTRESOURCE(FOO),不能与“FOO”一起使用。至少当资源位于dll中且调用位于exe中时。我已经用PEExplorer查看过了,您是对的,路径没有存储在资源表中-这是一条死路,但我需要找到一种方法来链接.rc中的资源(将生成rc),以便从exe中“找到”该资源(无需重新编译exe)。只是有类似的问题-正在尝试使用MAKEINTRESOURCE(ID)查找资源这不起作用,但当更改为FindResource(文本(“ID”)时,它奇迹般地起作用。类似于@EFraim建议的,只是有类似的问题-尝试使用MAKEINTRESOURCE(ID)查找资源,但这不起作用,但当更改为findresource(文本(“ID”),…)时,它奇迹般地起作用。与@EFraim的建议类似