2

私はこれを過去3日間試してきましたが、まだうまくいきません。WINAPIFindResource関数がエラー 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ましたが、何も機能せず、以前と同じエラーが表示されます。Web 上のすべてのソリューションは に.RCあり、resource.hファイルVisual Studioがあります。Eclipse で動作するものはありますか? ありがとう

4

3 に答える 3

2

エラーは正しいです。ファイルに type のリソースがありません"EXE".RCあなたがファイルを持っていないと言うとき、あなたはそう言いました。リソースはファイルで定義されており、.RCファイルがない場合はリソースがありません。"EXE"リソース ID 10のタイプのリソースを追加するには、.RCファイルを作成してプロジェクトに追加し、次のように言う必要があります。

10 EXE "somefile"

ここで、「somefile」は、リソース データとして使用する内容のファイルです。

IDE がファイルをサポートしていない場合、IDE.RCを介してリソースを追加することはできません。たとえば、後処理ステップを介して、別の方法でそれらを追加する必要があります。

ただし、重要なのは、そのタイプのリソースを作成するために何もしなかったため、「リソース タイプが見つかりません」というエラーが発生することです。何を期待していましたか?

于 2013-02-16T13:53:33.527 に答える
2

バイナリから特定のリソースをロードするには、リソースのタイプとその ID を知る必要があります。

これらのいずれかまたは両方が不明な場合は、関数EnumResourceTypes()を使用したりEnumResourceNames()、調べたりすることができます。

使用方法の例は、 http EnumResourceTypes(): //msdn.microsoft.com/en-us/library/windows/desktop/ms648008%28v=vs.85%29.aspx#_win32_Creating_a_Resource_Listにあります。


アップデート:

MS が提供するリソース エディタが利用できない場合は、この無料のツールが役立つかもしれません: http://www.resedit.net/以前はそれを使用し、自分のニーズに合わせて作業していました。とにかく今の状態が分かりません。

于 2013-02-16T10:49:45.890 に答える