मैं mingw-gcc संकलित निष्पादन योग्य में एक आइकन कैसे जोड़ूँ?


86

Windows में, mingw की gcc का उपयोग करते हुए, क्या यह निर्दिष्ट करने के लिए कि आउटपुट exe फ़ाइल एक आइकन फ़ाइल लेने के लिए है, ताकि exe फ़ाइल एक्सप्लोरर में उस आइकन के साथ दिखाई दे?

जवाबों:


181

आपको पहले आइकन बनाने की आवश्यकता है। फिर आपको नीचे दी गई सामग्री के साथ एक आरसी फ़ाइल बनाने की आवश्यकता है। यहाँ हम इसे नाम देंगे my.rc

id ICON "path/to/my.ico"

idउपरोक्त आदेश में उल्लेख किया है काफी कुछ भी हो सकता है। जब तक आप इसे अपने कोड में संदर्भित नहीं करना चाहते तब तक कोई फर्क नहीं पड़ता। फिर विंडस को इस प्रकार चलाएं:

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

ध्यान दें, लैंगिड यूके इंग्लिश के लिए है (जो कि ऑस्ट्रेलिया के सबसे नज़दीकी स्थानीयकरण है। मैं पहचान सकता हूं।) यदि आप यूएस "इंग्लिश" चाहते हैं तो BLOCK लाइन को इसमें बदल दें:

BLOCK "040904E4"

और अनुवाद लाइन:

VALUE "Translation", 0x409, 1252

जानकारी के लिए VERSIONINFO संसाधन देखें ।


6
यह बहुत अच्छा होगा यदि उदाहरण दिखाया जाए कि आईसीओएन लाइन कहां डालें।
चाचम 15


आप कई "ट्रांसलेशन" भी शामिल कर सकते हैं (यह सिर्फ विंडोज को बता रहा है कि इस प्रोग्राम का अनुवाद केवल WORD, WORD-जोड़ेVALUE "Translation", 0x409, 1252, 0x809, 1252 को मिलाकर किया गया है , उदाहरण के लिए: msdn.microsoft.com/en-us/ के अनुसार US और UK दोनों इंग्लिश को सक्षम करेगा। पुस्तकालय / aa381058.aspx । यह आपको यह भी बताता है कि आप एक से अधिक 'ब्लॉक "lang04E4" शामिल कर सकते हैं
वर्ल्डसेंडर

मैं IconsExtractएक जरूरत में एक आइकन एम्बेडेड पाने के लिए Nirsoft की मुफ्त उपयोगिता का उपयोग करता था exe
एवगेनी सर्गेव

6

RC फाइल में, nameID का नाम होना भी जरूरी नहीं है, यह सिर्फ एक पूर्णांक हो सकता है। फ़ाइल नाम उद्धृत किया जाना चाहिए, बशर्ते यह वही स्थान शामिल हैं। के बजाय:

windres my.rc -O coff -o my.res

आप उपयोग कर सकते हैं:

windres my.rc my.o

1
मैं लिंक कर सकते हैं नहीं my.oMinGW के साथ g++के बाद windres my.rc my.o(कुछ WinMainसंबंधित त्रुटि संदेश), लेकिन windres my.rc -O coff -o my.resपथ ठीक काम किया।
इवगेनी सर्गेव

.o(= COFF स्वचालित रूप से; मैं इसे my.res.oस्पष्टता के लिए पसंद करता हूं) मेरे लिए काम करता है। वास्तव में .resMSVC द्वारा निर्मित फ़ाइलों का एक अलग स्वरूप होता है, इसलिए यह COFF.res
kxr

1

संसाधन हैकर का प्रयास करें। मैं लिनक्स (WSL) में अपने प्रोजेक्ट को संकलित करने में सक्षम था और होमपेज पर लोगो से एक आइकन उत्पन्न कर सकता था। बस इसे exe में एम्बेड करने के लिए एक सरल तरीके की आवश्यकता थी और इस कार्यक्रम ने बहुत अच्छा काम किया। एंगस जॉनसन द्वारा रिसोर्स हैकर


यह रास्ता आसान था। बस .exe खोला, "बाइनरी या छवि संसाधन जोड़ें" पर क्लिक किया, .ico फ़ाइल खोली, और सहेजी गई।
एंडोलिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.