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 iddisebutkan 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.resyang 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 .rcfile 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, 1252akan 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"'
IconsExtractuntuk mendapatkan ikon yang disematkan di exeyang 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.odengan MinGW g++setelahnya windres my.rc my.o( WinMainpesan kesalahan terkait beberapa ), tetapi windres my.rc -O coff -o my.resjalur berfungsi dengan baik.
.o(= COFF secara otomatis; Saya menamakannya seperti my.res.ountuk kejelasan) bekerja untuk saya. Sebenarnya .resfile 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