Come aggiungo un'icona a un eseguibile compilato con mingw-gcc?


90

In Windows, usando il gcc di mingw, c'è comunque da specificare che il file exe di output deve prendere un file icona, in modo che il file exe venga mostrato con quell'icona in explorer?

Risposte:


187

Devi prima creare l'icona. Quindi è necessario creare un file RC con il contenuto seguente. Qui lo chiameremo come my.rc.

Il idmenzionato nel comando sopra può essere praticamente qualsiasi cosa. Non importa a meno che tu non voglia fare riferimento ad esso nel tuo codice. Quindi eseguire windres come segue:

Quindi, durante la creazione dell'eseguibile, insieme ad altri file oggetto e file di risorse, includi quelli my.resottenuti dal passaggio precedente. per esempio:

E questo dovrebbe essere tutto quello che c'è da fare.


E, senza alcun costo aggiuntivo, se desideri includere le informazioni sulla versione nella tua applicazione, aggiungi il seguente boilerplate a un nuovo .rcfile e segui i passaggi sopra indicati.

Nota, il langID è per l'inglese britannico (che è la localizzazione più vicina all'Australia che ho potuto identificare). Se desideri "inglese" americano, cambia la BLOCK riga in:

e la linea di traduzione per:

Vedere la risorsa VERSIONINFO per informazioni.


6
Sarebbe bello se l'esempio mostrasse dove inserire la riga ICON.
chacham15


puoi anche includere più "Traduzioni" (sta solo dicendo a Windows che questo programma è tradotto) semplicemente aggiungendo WORD, coppie di WORD, ad esempio: VALUE "Translation", 0x409, 1252, 0x809, 1252abiliterebbe sia l'inglese americano che quello britannico secondo msdn.microsoft.com/en-us/ libreria / aa381058.aspx . Questo ti dice anche che puoi includere più di un 'BLOCCO "lang04E4"'
WorldSEnder

Ho usato l'utilità gratuita di Nirsoft IconsExtractper ottenere un'icona incorporata in una di execui avevo bisogno.
Evgeni Sergeev

6

Nel file RC, nameID non deve nemmeno essere un nome, può essere solo un numero intero. Il nome del file deve essere citato solo se contiene uno spazio. Invece di:

Puoi usare:


1
Non sono riuscito a collegare il my.ocon MinGW's g++after windres my.rc my.o(alcuni WinMainmessaggi di errore correlati), ma il windres my.rc -O coff -o my.respercorso ha funzionato bene.
Evgeni Sergeev

.o(= COFF automaticamente; lo chiamo come my.res.oper chiarezza) funziona per me. In realtà i .resfile prodotti da MSVC hanno un formato diverso, quindi sembra essere strano / incompatibile usando COFF in.res
kxr

1

Prova Resource Hacker. Sono stato in grado di eseguire la compilazione incrociata del mio progetto in Linux (WSL) e generare un'icona dal logo sulla home page. Avevo solo bisogno di un modo semplice per incorporarlo nell'exe e questo programma ha funzionato alla grande. Resource Hacker di Angus Johnson


Era molto più semplice. Basta aprire il file .exe, fare clic su "Aggiungi binario o risorsa immagine", aprire il file .ico e salvare.
endolith
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.