FindResource выдает ошибку 1813 на исполняемый файл

Я пробовал это как последние 3 дня и до сих пор не могу заставить его работать. WINAPI FindResource Выдает функцию и ошибка 1813: это означает, что тип ресурса не найден. Я использую eclipse, поэтому нет файла .RC или файла resource.h, поэтому я загрузил свой exe-файл LoadLibraryA а затем использовал HANDLE в FindResourceA, Вот мой код:

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но ничего не работает, и все равно выдает мне ту же ошибку, что и раньше. Все решения в Интернете с .RC а также resource.h файлы на Visual StudioЕсть ли что-нибудь, чтобы работать с затмением? Спасибо

2

Решение

Чтобы загрузить конкретный ресурс из двоичного файла, вам необходимо знать тип ресурса и его идентификатор.

Если один из них или оба не знают, вы можете использовать функцию 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/ Я использовал его и работал для своих нужд. Во всяком случае, я не знаю его нынешнее состояние.

2

Другие решения

Ошибка правильная. Нет ресурса типа "EXE" в вашем файле. Вы сами так сказали, когда говорите, что у вас нет .RC файл. Ресурсы определены в .RC файлы, и если у вас его нет, то у вас нет ресурсов. Добавить ресурс типа "EXE" с идентификатором ресурса 10, вам нужно создать .RC файл, добавьте его в свой проект и скажите

10 EXE "somefile"

где «somefile» — это файл, содержимое которого вы хотите использовать в качестве данных ресурса.

Если ваша IDE не поддерживает .RC файлы, то вы не сможете добавлять ресурсы через IDE. Вам нужно будет добавить их другим способом, скажем, через шаг постобработки.

Но дело в том, что вы получаете ошибку «тип ресурса не найден», потому что вы ничего не сделали для создания ресурса этого типа. Что ты ожидал?

2

По вопросам рекламы [email protected]