Dans Windows, en utilisant le gcc de mingw, est-il possible de spécifier que le fichier exe de sortie doit prendre un fichier icône, de sorte que le fichier exe s'affiche avec cette icône dans l'explorateur?
Vous devez d'abord créer l'icône. Ensuite, vous devez créer un fichier RC avec le contenu ci-dessous. Ici, nous allons le nommer my.rc
.
id ICON "path/to/my.ico"
Le id
mentionné dans la commande ci-dessus peut être à peu près n'importe quoi. Cela n'a pas d'importance à moins que vous ne vouliez y faire référence dans votre code. Exécutez ensuite windres comme suit:
windres my.rc -O coff -o my.res
Ensuite, lors de la construction de l'exécutable, ainsi que d'autres fichiers objets et fichiers de ressources, incluez ceux my.res
que nous avons obtenus à l'étape ci-dessus. par exemple:
g++ -o my_app obj1.o obj2.o res1.res my.res
Et cela devrait être tout ce qu'il y a à faire.
Et, sans frais supplémentaires, si vous souhaitez inclure des informations de version dans votre application, ajoutez le passe-partout suivant à un nouveau .rc
fichier et suivez les étapes mentionnées ci-dessus.
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
Notez que le langID est pour l'anglais britannique (qui est la localisation la plus proche de l'Australie que j'ai pu identifier.) Si vous voulez "anglais" américain, changez la BLOCK
ligne en:
BLOCK "040904E4"
et la ligne de traduction vers:
VALUE "Translation", 0x409, 1252
Voir la ressource VERSIONINFO pour plus d'informations.
VALUE "Translation", 0x409, 1252, 0x809, 1252
à la fois l' anglais américain et britannique selon msdn.microsoft.com/en-us/ bibliothèque / aa381058.aspx . Cela vous indique également que vous pouvez inclure plus d'un 'BLOCK "lang04E4"'IconsExtract
pour obtenir une icône intégrée dans unexe
dont j'avais besoin.Dans le fichier RC, le nameID n'a même pas besoin d'être un nom, il peut simplement s'agir d'un entier. Le nom de fichier ne doit être entre guillemets que s'il contient un espace. Au lieu de:
Vous pouvez utiliser:
Ressource ICON
page de manuel windres
Exemple
la source
my.o
avec MinGWg++
aprèswindres my.rc my.o
(unWinMain
message d'erreur lié), mais lewindres my.rc -O coff -o my.res
chemin fonctionnait bien..o
(= COFF automatiquement; je le nomme commemy.res.o
pour plus de clarté) fonctionne pour moi. En fait, les.res
fichiers produits par MSVC ont un format différent, il semble donc étrange / incompatible d'utiliser COFF dans.res
Essayez Resource Hacker. J'ai pu croiser mon projet sous Linux (WSL) et générer une icône à partir du logo sur la page d'accueil. Juste besoin d'un moyen simple de l'intégrer dans l'exe et ce programme a très bien fonctionné. Hacker de ressources par Angus Johnson
la source