10

राइट-क्लिक के साथ दिखाई नहीं देता है, मैं नियमित एमएसवीसी में ऐसा करना बहुत आसान है, लेकिन वीसी ++ एक्सप्रेस में आसानी से समर्थित नहीं है।डीएलएल में संस्करण संसाधन

वीसी ++ एक्सप्रेस में कोई संसाधन संपादक नहीं है। इसलिए मैंने अपनी डीएलएल परियोजना में संस्करण.आरसी नाम की एक फाइल जोड़ा। फ़ाइल में निम्न सामग्री है, जिसे संसाधन कंपाइलर द्वारा संकलित किया गया है और अंतिम DLL में जोड़ा गया है। यह संसाधन डीएसएल में reshacker का उपयोग कर देखने योग्य है, हालांकि विंडोज एक्सप्लोरर में डीएलएल पर राइट-क्लिक करते समय नहीं।

राइट-क्लिक करते समय इसे देखने के लिए मेरी आरसी फ़ाइल से क्या गुम है?

VS_VERSION_INFO VERSIONINFO 
FILEVERSION 1,0,0,1 
PRODUCTVERSION 1,0,0,1 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", "something Application" 
      VALUE "FileVersion", "1, 0, 0, 1" 
      VALUE "InternalName", "something" 
      VALUE "LegalCopyright", "Copyright (C) 2008 Somebody" 
      VALUE "OriginalFilename", "something.exe" 
      VALUE "ProductName", "something Application" 
      VALUE "ProductVersion", "1, 0, 0, 1" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 

उत्तर

9

सही समाधान अपने आर सी फ़ाइल के शीर्ष में जोड़ने के लिए है:

#include <windows.h> 
+4

'# शामिल ' पर्याप्त है –

3

करने के लिए अपने संसाधनों से बदल कर देखें:

FILEFLAGSMASK 0x3fL 

और

BLOCK "040004e4" 

और

VALUE "Translation", 0x400, 1252 
+0

फिर जो आपके libs की पहले से ही एक संस्करण संसाधन से लिंक का पता लगाना। आप पहले से ही एक संस्करण संसाधन से जुड़ रहे हैं (अब आपको यह पता लगाना होगा कि कौन सी और कौन सी फाइल/lib यह करता है)। – Stefan

+0

वृद्धिशील लिंकिंग को अक्षम करने का प्रयास करें: प्रोजेक्ट गुण-> लिंकर-> सामान्य-> वृद्धिशील लिंकिंग सक्षम करें या पुनर्निर्माण भी मदद कर सकता है। – Stefan

+0

मैंने अपनी टिप्पणियां हटा दी हैं, अब सवाल फिर से लिखा गया था। –

15

मैं देखना (reshacker का प्रयोग करके) सक्षम मेरी संसाधन के बीच एक अंतर था और संसाधन जो रिग पर दिखाई देते हैं एचटी-क्लिक, और वह संसाधन का नाम था। इसलिए मैंने VS_VERSION_INFO को 1 में बदल दिया; और अब संसाधन राइट-क्लिक पर दिखाई देता है।

1 VERSIONINFO 
FILEVERSION 1,0,0,1 
PRODUCTVERSION 1,0,0,1 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", "something Application" 
      VALUE "FileVersion", "1, 0, 0, 1" 
      VALUE "InternalName", "something" 
      VALUE "LegalCopyright", "Copyright (C) 2008 Somebody" 
      VALUE "OriginalFilename", "something.exe" 
      VALUE "ProductName", "something Application" 
      VALUE "ProductVersion", "1, 0, 0, 1" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 
+2

ग्रेट कैच! मैं बस एक ही चीज़ में भाग गया। संभवतः VS_VERSION_INFO प्रतीक को कहीं और परिभाषित किया गया है जो आपकी (या मेरा) संसाधन स्क्रिप्ट से शामिल नहीं हो रहा है। –

+1

मैंने इसे बराबर 1 तक परिभाषित किया और अब यह काम करता है। धन्यवाद! काश मैं पहले यह जवाब मिला था। –

+0

डेविड का अपने प्रश्न का उत्तर सही है! और यह एक महान पकड़ है, खासकर जब कोई विजुअल स्टूडियो का उपयोग किये बिना संसाधन फाइलें बना रहा है। शायद यही कारण है कि वह जिम क्राफ्टन और मैं एक ही समस्या में भाग गया है। धन्यवाद डेविड! – user1593842

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