2009-10-15 17 views
7

मुझे आरसी स्क्रिप्ट नहीं पता है।क्या मुझे afxres.h की आवश्यकता है, अगर मैं एमएफसी का उपयोग नहीं कर रहा हूं? मैं इसे आरसी लिपि से कैसे हटा सकता हूं?

मैं उत्पाद संस्करण, फ़ाइल संस्करण, आदि मेटाडेटा को एक डीएलएल में शामिल करना चाहता हूं जो मैं बना रहा हूं। मैं ऐसा करने के लिए एक .rc फ़ाइल का उपयोग कर रहा हूँ। निर्माण मेकफ़ाइल संचालित है। मैं एक उदाहरण के साथ पीछा कर रहा हूँ। आरसी scrpit मुझे मिला।

टेम्पलेट। आरसी फ़ाइल में afxres.h शामिल है, लेकिन मुझे नहीं लगता कि मुझे इसकी आवश्यकता है। लेकिन अगर मैं इसे हटा देता हूं तो मुझे संकलन त्रुटियों का एक गुच्छा मिलता है।

मूल, गैर-एमएफसी आरसी स्क्रिप्ट कैसा दिखता है? मैं इस तरह सब सामान निकाल सकते हैं:

///////////////////////////////////////////////////////////////////////////// 
// English (U.S.) resources 

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 
#ifdef _WIN32 
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 
#pragma code_page(1252) 
#endif //_WIN32 

.... 

उत्तर

2

मेरा जवाब:
नहीं, मैं वह सब बकवास की जरूरत नहीं है। यहां एक आरसी स्क्रिप्ट है जो VERSIONINFO के लिए काम करती है।

#define VER_FILEVERSION   1,2,3,4 
#define VER_FILEVERSION_STR  "1.2.3.4" 
#define VER_PRODUCTVERSION  1,2,0,0 
#define VER_PRODUCTVERSION_STR "1.2.0.0" 

// ------------------------------------------------------- 

VS_VERSION_INFO VERSIONINFO 
FILEVERSION   VER_FILEVERSION 
PRODUCTVERSION   VER_PRODUCTVERSION 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x2L 
FILESUBTYPE 0x0L 
BEGIN 
BLOCK "StringFileInfo" 
BEGIN 
    BLOCK "040904b0" 
    BEGIN 
    VALUE "CompanyName",  "Company X" 
    VALUE "FileDescription", "Description Goes Here" 
    VALUE "InternalName",  "NotSure" 
    VALUE "LegalCopyright", "Copyright (C) 2009 Your Name Here" 
    VALUE "OriginalFilename", "DllName.dll" 
    VALUE "ProductName",  "Product Title" 
    VALUE "FileVersion",  VER_FILEVERSION_STR 
    VALUE "ProductVersion", VER_PRODUCTVERSION_STR 
    END 
END 
BLOCK "VarFileInfo" 
BEGIN 
    VALUE "Translation", 0x409, 1200 
END 
END 
साथ

यह Conmpile:

$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc 
+3

आप अपनी पसंद की संसाधन फ़ाइल को संपादित कर सकते हैं। जिन लाइनों को आप अकेले हटाते हैं उन्हें छोड़ने का लाभ संसाधन संपादक का उपयोग करके इसे स्वचालित रूप से संपादित करने में सक्षम होना है। यदि आप बारीकी से देखते हैं, तो आप देखेंगे कि afxres.h का दूसरा संदर्भ फ़ाइल पुन: उत्पन्न होने पर पहली बार पुनर्निर्माण करता है। इसलिए windows.h के साथ दोनों संदर्भों को afxres.h में बदलें (क्योंकि आप एमएफसी का उपयोग नहीं कर रहे हैं) और समस्या हल हो जाएगी। – shipr

5

मैं जब MFC के बिना संकलित करने के लिए कोशिश कर रहा है एक ऐसी ही समस्या थी। चीसो का समाधान मेरे लिए पर्याप्त रूप से काम नहीं करेगा।

सबकुछ संकलित ठीक है, और मैंने इमारत के दौरान कोई त्रुटि/चेतावनी नहीं देखी। आइकन जो मेरी संसाधन फ़ाइल में परिभाषित किया गया था 'विंडोज एक्सप्लोरर' में सही ढंग से दिखाया गया था। हालांकि, संस्करण डेटा उपलब्ध नहीं था। (जिसे निष्पादन योग्य और चयन गुणों पर राइट-क्लिक करते समय देखा जा सकता है। इस मामले में कोई 'संस्करण' टैब मौजूद नहीं था।)

इसे काम करने के लिए मुझे निम्नलिखित के शीर्ष पर शामिल करना पड़ा। आरसी फ़ाइल:

#include <windows.h> 

इस परिवर्तन के साथ, संस्करण टैब निष्पादन योग्य गुणों में दिखाई देगा। साथ ही, .NET System.Diagnostics.FileVersionInfo क्लास अब संस्करण की जानकारी प्राप्त करने में सक्षम है, जबकि यह पहले काम नहीं करेगा।

डिफ़ॉल्ट रूप से "stdafx.h" में "windows.h" शामिल होगा। मुझे यकीन नहीं है कि windows.h की आवश्यकता क्यों है, लेकिन ऐसा लगता है कि मेरे मामले में अंतर है।

संपादित करें: चेसो के जवाब में, कुछ और विशिष्ट जानकारी जोड़ा गया।

+0

क्या आप कह रहे हैं कि rc.exe आरसी स्क्रिप्ट संकलित करने में असफल रहा, बिना फ़ाइल के? क्या प्रतीक परिभाषित नहीं किया गया था? यह कैसे असफल रहा? – Cheeso