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


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


76
2018-04-02 03:57


मूल




जवाब:


आपको पहले आइकन बनाना होगा। फिर आपको एक आरसी फाइल बनाने की जरूरत है ऐसा कुछ दिखता है:

id ICON "path/to/my.ico"

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

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

फिर जब आप लिंक करते हैं तो आप अपनी ऑब्जेक्ट फ़ाइलों के साथ my.res को शामिल करते हैं, उदा।

g++ -o my_app obj1.o obj2.o 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 संसाधन जानकारी के लिए के लिए।


165
2018-04-02 05:14



यह अच्छा होगा अगर उदाहरण दिखाया गया कि आईसीओएन लाइन कहां डालें। - chacham15
और दूसरी बात.. stackoverflow.com/questions/1411040/... - Erik Friesen
आप वर्ड, वर्ड-जोड़े को जोड़कर कई "अनुवाद" भी शामिल कर सकते हैं (यह सिर्फ विंडोज़ को बता रहा है कि इस प्रोग्राम का अनुवाद किया गया है) उदाहरण के लिए: VALUE "Translation", 0x409, 1252, 0x809, 1252 यूएस और यूके दोनों अंग्रेजी के अनुसार सक्षम होगा msdn.microsoft.com/en-us/library/aa381058.aspx। यह आपको यह भी बताता है कि आप एक से अधिक 'ब्लॉक' lang04E4 '' शामिल कर सकते हैं - WorldSEnder
मैंने निर्सॉफ्ट की मुफ्त उपयोगिता का उपयोग किया IconsExtract एक में एम्बेडेड एक आइकन प्राप्त करने के लिए exe मुझे चाहिए - Evgeni Sergeev


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

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

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

windres my.rc my.o

5
2017-10-02 02:20



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