Di Windows, menggunakan mingw's gcc, apakah ada cara untuk menentukan bahwa file exe keluaran adalah untuk mengambil file ikon, sehingga file exe ditampilkan dengan ikon itu di explorer?
Di Windows, menggunakan mingw's gcc, apakah ada cara untuk menentukan bahwa file exe keluaran adalah untuk mengambil file ikon, sehingga file exe ditampilkan dengan ikon itu di explorer?
Jawaban:
Anda perlu membuat ikon terlebih dahulu. Maka Anda perlu membuat file RC dengan konten di bawah ini. Di sini kami akan menamainya sebagai my.rc
.
id ICON "path/to/my.ico"
Yang id
disebutkan dalam perintah di atas bisa berarti apa saja. Tidak masalah kecuali jika Anda ingin merujuknya di kode Anda. Kemudian jalankan windres sebagai berikut:
windres my.rc -O coff -o my.res
Kemudian saat membangun file yang dapat dieksekusi, bersama dengan file objek dan file sumber daya lainnya, sertakan my.res
yang kami dapatkan dari langkah di atas. misalnya:
g++ -o my_app obj1.o obj2.o res1.res my.res
Dan seharusnya hanya itu saja.
Dan, tanpa biaya tambahan, jika Anda ingin memasukkan informasi versi dalam aplikasi Anda, tambahkan boilerplate berikut ke .rc
file baru dan ikuti langkah-langkah yang disebutkan di atas.
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
Perhatikan, langID adalah untuk Inggris Inggris (yang merupakan pelokalan terdekat dengan Australia yang dapat saya identifikasi.) Jika Anda menginginkan "Bahasa Inggris" AS, ubah BLOCK
baris menjadi:
BLOCK "040904E4"
dan baris terjemahan ke:
VALUE "Translation", 0x409, 1252
Lihat sumber daya VERSIONINFO untuk info.
VALUE "Translation", 0x409, 1252, 0x809, 1252
akan mengaktifkan bahasa Inggris AS dan Inggris Raya menurut msdn.microsoft.com/en-us/ library / aa381058.aspx . Ini juga memberi tahu Anda bahwa Anda dapat menyertakan lebih dari satu 'BLOK "lang04E4"'
IconsExtract
untuk mendapatkan ikon yang disematkan di exe
yang saya butuhkan.
Dalam file RC, nameID bahkan tidak harus berupa nama, hanya bisa berupa integer. Nama file harus dikutip hanya jika mengandung spasi. Dari pada:
windres my.rc -O coff -o my.res
Kamu dapat memakai:
windres my.rc my.o
my.o
dengan MinGW g++
setelahnya windres my.rc my.o
( WinMain
pesan kesalahan terkait beberapa ), tetapi windres my.rc -O coff -o my.res
jalur berfungsi dengan baik.
.o
(= COFF secara otomatis; Saya menamakannya seperti my.res.o
untuk kejelasan) bekerja untuk saya. Sebenarnya .res
file yang dihasilkan oleh MSVC memiliki format yang berbeda, jadi sepertinya menjadi ganjil / tidak kompatibel menggunakan COFF di.res
Coba Resource Hacker. Saya dapat mengkompilasi silang proyek saya di Linux (WSL) dan menghasilkan ikon dari logo di beranda. Hanya membutuhkan cara sederhana untuk menyematkannya di exe dan program ini bekerja dengan baik. Resource Hacker oleh Angus Johnson