Wie verknüpfe ich eine .rc-Datei (Ressource), wenn ich eine Win32-App mit gcc über die Befehlszeile kompiliere?

Lesezeit: 3 Minuten

Ich habe speziell das Win32-Tutorial von Fälschern befolgt Dies Abschnitt und haben Sie sich gefragt, wie Sie die .rc(resource)-Datei beim Kompilieren eines Win32-Programms verknüpfen würden? (Ich kompiliere über die Befehlszeile).

ich habe gelesen Dies Artikel, der besagt, dass Sie so etwas tun könnten windres chocolate-doom-res.rc chocolate-doom-res.o und so kompilierengcc other.o files.o etc.o chocolate-doom-res.o -o chocolate-doom.exe

Aber als ich es versuchte windres res.rc res.o (res.rc ist meine Ressourcendatei) es gibt mir das windres: res.rc:3: syntax error

res.rc

#include "resource.h"
IDR_MYMENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "E&xit", ID_FILE_EXIT
    END

    POPUP "&Stuff"
    BEGIN
        MENUITEM "&Go", ID_STUFF_GO
        MENUITEM "G&o somewhere else",0,GRAYED
    END
END

IDI_MYICON ICON "menu_one.ico"

Irgendwelche Ideen?.

  • Sie haben mir wahrscheinlich nur Stunden Zeit gespart! danke für den artikel!

    – RIJIK

    14. Februar 2018 um 17:18 Uhr

Sie vermissen die SPEISEKARTE Ressourcentyp. Sie sollten schreiben:

#include "resource.h"
IDR_MYMENU MENU
BEGIN
.
.
.
END

  • @sil3nt, kein Problem. So etwas passiert, und Ihre Frage ist immer noch nützlich.

    – Frédéric Hamidi

    27. November 2010 um 12:12 Uhr

Benutzer-Avatar
Koch Gladiator

FFWD bis 2020 Q4. Im Zeitalter von VS Code, haben viele Leute etwas mit “über die Grundlagen hinaus” zu kämpfen, wenn sie versuchen, die WIN32-GUI “Hello World” ohne Visual Studio zu kompilieren. Und ja, die Ressourcendatei ist wahrscheinlich der größte Stolperstein. Das ist ein breiteres Thema.

Da es bei der Frage nur darum geht, wie die rc-Datei “kompiliert” wird, möchte ich nur darauf antworten.

Irgendwie bist du an den Punkt gekommen, an dem du es auch hast my_app.rc und resource.h.

  • Um potenziell großen Ärger zu vermeiden, stellen Sie sicher, dass Sie dies getan haben #include <windows.h> an der Spitze der rc Datei
  • Ressourcen-Compiler wird aufgerufen rc. Wenn cl.exe ist auf dem Weg, rc.exe ist auch.
  • rc macht eine Binärdatei res Datei aus der rc Datei.
  • rc my_app.rc wird herstellen my_app.res
    • natürlich nur, wenn Ihre rc-Datei keine Fehler enthält.
    • wenn rc nicht finden können windows.h Sie können den Pfad so hinzufügen
      rc /i"C:\Windows Kits\10\Include\10.0.18362.0\um" my_app.rc
    • mit Ihrem lokalen Pfad natürlich.
  • die zu verwenden resauf der cl Befehlszeile, die Sie übergeben müssen res Datei an den Linker, wie in dieser imaginären Beispiel-CL-Kompilierungsbefehlszeile
cl /Zi /EHsc /Fe:my_app.exe my_app.cpp /link my_app.res

vergewissere dich /link ist das letzte Argument für Sie cl Befehlszeile.

BEARBEITEN

Nehmen wir an, Ihr Projektordner enthält:

my_app.cpp
resource.h
my_app.rc

Zuerst müssen Sie produzieren my_app.res wie oben beschrieben. Zweitens im VS-Code .vscode/tasks.jsondu wirst haben:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: cl.exe build active file",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/EHsc",
                "/Fe:",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${file}",
                "/link /SUBSYSTEM:WINDOWS ${fileDirname}\\${fileBasenameNoExtension}.res",
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: cl.exe"
        }
    ]
}

Beachten Sie die /link Argument, das Sie hinzufügen müssen, zu der ansonsten von generierten Standardaufgabendatei VS Code. Offen my_app.cpp und durchführen CTRL+SHIFT+B. Dadurch wird die aktive Datei kompiliert und mit Ihrer WIN32-App verknüpft, einschließlich Ihrer Ressourcen.

  • Endlich eine kurze und großartige Erklärung, wie die Ressourcendateien funktionieren.

    – TCB13

    4. Mai um 15:18 Uhr

  • Danke @TCB13 . Das Verständnis von WIN32-Ressourcen auf diese Weise kann den eigenen Vorteil erheblich steigern

    – Chef Gladiator

    6. Mai um 9:53 Uhr

1100440cookie-checkWie verknüpfe ich eine .rc-Datei (Ressource), wenn ich eine Win32-App mit gcc über die Befehlszeile kompiliere?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy