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?
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:
Devi prima creare l'icona. Quindi è necessario creare un file RC con il contenuto seguente. Qui lo chiameremo come my.rc
.
id ICON "path/to/my.ico"
Il id
menzionato 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:
windres my.rc -O coff -o my.res
Quindi, durante la creazione dell'eseguibile, insieme ad altri file oggetto e file di risorse, includi quelli my.res
ottenuti dal passaggio precedente. per esempio:
g++ -o my_app obj1.o obj2.o res1.res my.res
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 .rc
file e segui i passaggi sopra indicati.
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
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:
BLOCK "040904E4"
e la linea di traduzione per:
VALUE "Translation", 0x409, 1252
Vedere la risorsa VERSIONINFO per informazioni.
VALUE "Translation", 0x409, 1252, 0x809, 1252
abiliterebbe 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"'
IconsExtract
per ottenere un'icona incorporata in una di exe
cui avevo bisogno.
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:
windres my.rc -O coff -o my.res
Puoi usare:
windres my.rc my.o
my.o
con MinGW's g++
after windres my.rc my.o
(alcuni WinMain
messaggi di errore correlati), ma il windres my.rc -O coff -o my.res
percorso ha funzionato bene.
.o
(= COFF automaticamente; lo chiamo come my.res.o
per chiarezza) funziona per me. In realtà i .res
file prodotti da MSVC hanno un formato diverso, quindi sembra essere strano / incompatibile usando COFF in.res
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