Gibt es unter Windows unter Verwendung von mingws gcc trotzdem die Möglichkeit, anzugeben, dass die Ausgabe-Exe-Datei eine Symboldatei aufnehmen soll, damit die Exe-Datei mit diesem Symbol im Explorer angezeigt wird?
Gibt es unter Windows unter Verwendung von mingws gcc trotzdem die Möglichkeit, anzugeben, dass die Ausgabe-Exe-Datei eine Symboldatei aufnehmen soll, damit die Exe-Datei mit diesem Symbol im Explorer angezeigt wird?
Antworten:
Sie müssen zuerst das Symbol erstellen. Dann müssen Sie eine RC-Datei mit dem folgenden Inhalt erstellen. Hier nennen wir es my.rc
.
id ICON "path/to/my.ico"
Der id
im obigen Befehl erwähnte kann so ziemlich alles sein. Es spielt keine Rolle, es sei denn, Sie möchten in Ihrem Code darauf verweisen. Führen Sie dann die Windres wie folgt aus:
windres my.rc -O coff -o my.res
Fügen Sie dann beim Erstellen der ausführbaren Datei zusammen mit anderen Objektdateien und Ressourcendateien das hinzu, my.res
was wir aus dem obigen Schritt erhalten haben. z.B:
g++ -o my_app obj1.o obj2.o res1.res my.res
Und das sollte alles sein, was dazu gehört.
Wenn Sie ohne Aufpreis Versionsinformationen in Ihre Anwendung aufnehmen möchten, fügen Sie einer neuen .rc
Datei das folgende Boilerplate hinzu und befolgen Sie die oben genannten Schritte.
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904E4"
BEGIN
VALUE "CompanyName", "My Company Name"
VALUE "FileDescription", "My excellent application"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "my_app"
VALUE "LegalCopyright", "My Name"
VALUE "OriginalFilename", "my_app.exe"
VALUE "ProductName", "My App"
VALUE "ProductVersion", "1.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1252
END
END
Beachten Sie, dass die langID für UK-Englisch gilt (dies ist die nächstgelegene Lokalisierung zu Australien, die ich identifizieren konnte). Wenn Sie US-Englisch "Englisch" möchten, ändern Sie die BLOCK
Zeile in:
BLOCK "040904E4"
und die Übersetzungszeile zu:
VALUE "Translation", 0x409, 1252
Weitere Informationen finden Sie in der VERSIONINFO-Ressource .
VALUE "Translation", 0x409, 1252, 0x809, 1252
würde sowohl US- als auch UK-Englisch gemäß msdn.microsoft.com/en-us/ aktivieren. library / aa381058.aspx . Dies sagt Ihnen auch, dass Sie mehr als einen 'BLOCK "lang04E4"'
IconsExtract
von Nirsoft verwendet , um ein Symbol in ein von exe
mir benötigtes Symbol einzubetten .
In der RC-Datei muss die nameID nicht einmal ein Name sein, sondern kann nur eine Ganzzahl sein. Der Dateiname darf nur in Anführungszeichen gesetzt werden, wenn er ein Leerzeichen enthält. Anstatt:
windres my.rc -O coff -o my.res
Sie können verwenden:
windres my.rc my.o
my.o
mit MinGWs g++
nach windres my.rc my.o
(eine WinMain
verwandte Fehlermeldung) verknüpfen , aber der windres my.rc -O coff -o my.res
Pfad funktionierte einwandfrei.
.o
(= COFF automatisch; ich nenne es der my.res.o
Klarheit halber) funktioniert bei mir. Tatsächlich haben .res
Dateien, wie sie von MSVC erstellt wurden, ein anderes Format, so dass es mit COFF in.res
Versuchen Sie Resource Hacker. Ich konnte mein Projekt unter Linux (WSL) übergreifend kompilieren und aus dem Logo auf der Homepage ein Symbol generieren. Ich brauchte nur einen einfachen Weg, um es in die Exe einzubetten, und dieses Programm funktionierte großartig. Resource Hacker von Angus Johnson