ใน Windows โดยใช้ gcc ของ mingw มีการระบุหรือไม่ว่าไฟล์ exe ที่ส่งออกคือการใช้ไฟล์ไอคอนเพื่อให้ไฟล์ exe แสดงพร้อมกับไอคอนนั้นใน explorer
ใน Windows โดยใช้ gcc ของ mingw มีการระบุหรือไม่ว่าไฟล์ exe ที่ส่งออกคือการใช้ไฟล์ไอคอนเพื่อให้ไฟล์ exe แสดงพร้อมกับไอคอนนั้นใน explorer
คำตอบ:
คุณต้องสร้างไอคอนก่อน จากนั้นคุณต้องสร้างไฟล์ RC ที่มีเนื้อหาด้านล่าง ที่นี่เราจะตั้งชื่อเป็นmy.rc.
id ICON "path/to/my.ico"
ที่idกล่าวถึงในคำสั่งข้างต้นสามารถเป็นอะไรก็ได้ ไม่สำคัญเว้นแต่คุณต้องการอ้างถึงในโค้ดของคุณ จากนั้นเรียกใช้ windres ดังนี้:
windres my.rc -O coff -o my.res
จากนั้นในขณะที่สร้างไฟล์ปฏิบัติการพร้อมกับไฟล์ออบเจ็กต์และไฟล์ทรัพยากรอื่น ๆ ให้รวมmy.resสิ่งที่เราได้รับจากขั้นตอนข้างต้น เช่น:
g++ -o my_app obj1.o obj2.o res1.res my.res
และนั่นควรจะมีทั้งหมด
และไม่มีค่าใช้จ่ายเพิ่มเติมหากคุณต้องการรวมข้อมูลเวอร์ชันในแอปพลิเคชันของคุณให้เพิ่มต้นแบบต่อไปนี้ลงใน.rcไฟล์ใหม่และทำตามขั้นตอนที่กล่าวถึงข้างต้น
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
หมายเหตุ langID เป็นภาษาอังกฤษแบบสหราชอาณาจักร (ซึ่งเป็นการแปลที่ใกล้เคียงที่สุดกับออสเตรเลียที่ฉันสามารถระบุได้) หากคุณต้องการ "อังกฤษ" แบบสหรัฐอเมริกาให้เปลี่ยนBLOCK
บรรทัดเป็น:
BLOCK "040904E4"
และสายการแปลไปที่:
VALUE "Translation", 0x409, 1252
ดูแหล่งข้อมูล VERSIONINFOสำหรับข้อมูล
VALUE "Translation", 0x409, 1252, 0x809, 1252จะเปิดใช้งานทั้งภาษาอังกฤษแบบสหรัฐอเมริกาและแบบสหราชอาณาจักรตามmsdn.microsoft.com/en-us/ ห้องสมุด นอกจากนี้ยังบอกด้วยว่าคุณสามารถใส่ "BLOCK" lang04E4 "'ได้มากกว่าหนึ่งรายการ
                    IconsExtractเพื่อรับไอคอนที่ฝังอยู่ในสิ่งexeที่ฉันต้องการ
                    ในไฟล์ RC nameIDไม่จำเป็นต้องเป็นชื่อ แต่สามารถเป็นจำนวนเต็ม ชื่อไฟล์จะต้องยกมา แต่ถ้ามันมีช่องว่าง แทน:
windres my.rc -O coff -o my.res
คุณสามารถใช้ได้:
windres my.rc my.o
    my.oกับ MinGW g++หลังจากwindres my.rc my.o( WinMainข้อความแสดงข้อผิดพลาดที่เกี่ยวข้อง) แต่windres my.rc -O coff -o my.resเส้นทางใช้งานได้ดี
                    .o(= กาแฟโดยอัตโนมัติฉันตั้งชื่อmy.res.oเพื่อความชัดเจน) เหมาะสำหรับฉัน จริงๆแล้ว.resไฟล์ที่สร้างโดย MSVC มีรูปแบบที่แตกต่างกันดังนั้นจึงดูเหมือนว่าจะแปลก / ไม่เข้ากันเมื่อใช้ COFF ใน.res
                    ลองใช้ Resource Hacker ฉันสามารถข้ามการคอมไพล์โครงการของฉันใน Linux (WSL) และสร้างไอคอนจากโลโก้บนหน้าแรก ต้องการเพียงวิธีง่ายๆในการฝังลงใน exe และโปรแกรมนี้ก็ใช้งานได้ดี แฮ็กเกอร์ทรัพยากรโดย Angus Johnson