2009-04-02 9 views
73

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

उत्तर

158

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

id ICON "path/to/my.ico" 

आईडी काफी कुछ भी कर सकते हैं। इससे कोई फर्क नहीं पड़ता जब तक आप अपने कोड में का संदर्भ नहीं लेना चाहते हैं। तब windres चलाने इस प्रकार है:

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

तब जब आप लिंक आप बस अपने वस्तु फ़ाइलों के साथ my.res शामिल, उदा .:

g++ -o my_app obj1.o obj2.o my.res 

और वह इसके लिए बस इतना है होना चाहिए। LangID

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 

ध्यान दें,:


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

BLOCK "040904E4" 

और अनुवाद लाइन के लिए:

VALUE "Translation", 0x409, 1252 

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

+2

यह अच्छा होगा अगर उदाहरण दिखाया गया कि आईसीओएन लाइन कहां डालें। – chacham15

+0

और ... दूसरा .. http://stackoverflow.com/questions/1411040/how-to-add-an-icon-to-an-plication-built-with-eclipse-galileo-c-and-mingw –

+0

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

5

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

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

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

windres my.rc my.o 
+1

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

संबंधित मुद्दे