2008-08-03 5 views
17

एक MFC अनुप्रयोग है कि मैं विस्थापित करने के लिए कोशिश कर रहा हूँ जो अगर मैं /MT सेट इस त्रुटि का कारण बनता है जो _AFXDLL तैयार हो जाओ करने का कारण बनता afxext.h का उपयोग करता है,,:विजुअल स्टूडियो 2005 का उपयोग कर विंडोज एनटी 4.0 के लिए बनाएँ?

का उपयोग करें _AFXDLL के लिए/एमडी स्विच बनाता

मेरी शोध तिथि से संकेत मिलता है कि विजुअल स्टूडियो (सी ++, इस मामले में) 2005 का उपयोग कर विंडोज एनटी 4.0 पर निष्पादन के लिए आवेदन बनाना असंभव है।

क्या यह वाकई सच है? क्या कोई कामकाज उपलब्ध है?

+1

कोई भी कृपया समर्थक यह तकनीक –

उत्तर

8

नहीं, वीएस2005 के साथ कई एप्लिकेशन बनाए गए हैं जिन्हें विंडोज एक्सपी, 2000, एनटी, पूरे स्टैक का समर्थन करना है। मुद्दा यह है कि (डिफ़ॉल्ट रूप से) वीएस2005 एनटी पर मौजूद पुस्तकालयों/निर्यातों का उपयोग करना चाहता है।

कुछ पृष्ठभूमि के लिए this thread देखें।

फिर प्रीप्रोसेसर मैक्रोज़ के माध्यम से अपनी निर्भरताओं को सीमित करना शुरू करें, और उन एपीआई से परहेज करें जो NT पर समर्थित नहीं हैं।

+0

इस मुद्दे को भ्रमित करने वाला यह क्या है कि यदि आप स्थैतिक लिंक करते हैं, तो आपके द्वारा उपयोग किए जाने वाले प्रतीकों के लिए आवश्यक ऑब्जेक्ट फ़ाइलों को वास्तव में खींच लिया जाता है, यही कारण है कि ऐसा लगता है कि यह ज्यादातर समय NT4 पर काम करता है। –

4

_AFXDLL त्रुटि से छुटकारा पाने के लिए, क्या आपने एमएफसी का उपयोग डीएलएल के बजाय स्थिर lib के रूप में करने के लिए सेटिंग्स में बदलने का प्रयास किया है? यह डीएलएल के बजाए रनटाइम libs को स्थिर में बदलने में पहले से ही कर रहा है।

1

हालांकि मैं afxext.h से परिचित नहीं हूँ, मैं सोच रहा हूँ इसके बारे में क्या यह विंडोज NT4 के साथ असंगत बना देता है ....

हालांकि, मूल सवाल का जवाब देने: "तिथि करने के लिए मेरे अनुसंधान इंगित करता है कि विजुअल स्टूडियो (सी ++, इस मामले में) 2005 का उपयोग कर विंडोज एनटी 4.0 पर निष्पादन के लिए आवेदन बनाना असंभव है। "

उत्तर हाँ होना चाहिए, विशेष रूप से यदि एप्लिकेशन मूल रूप से लिखा गया था या एनटी 4 पर चल रहा था! Afxext.h चीज़ के साथ, यह एक आसान हाँ होना चाहिए।

दूसरी चीज जो मुझे परेशानी मिल रही है वह ढीली प्रकृति है जिसमें लोग एनटी टर्म फेंक रहे हैं। माना जाता है कि ज्यादातर लोग विंडोज एनटी 4 के रूप में 'एनटी' के बारे में सोचते हैं लेकिन यह अभी भी संदिग्ध है क्योंकि 'अधिकांश लोग' सभी लोगों के बराबर नहीं हैं।

असल में शब्द 'एनटी' एनटी श्रृंखला के बराबर है। एनटी श्रृंखला एनटी 3, एनटी 4, एनटी 5 (2000, एक्सपी, 2003) और एनटी 6 (विस्टा) है।

Win32 एक उपप्रणाली है जिसे आप अपने सी/सी ++ कोड को भी लक्षित करते हैं। तो मुझे कोई कारण नहीं दिखता कि किसी को इस एनटी 4 प्लेटफ़ॉर्म & उपप्रणाली को लक्षित करने में सक्षम नहीं होना चाहिए या यदि यह एक प्लेटफॉर्म पोर्टिंग व्यायाम है, तो एमसीसी निर्भरताओं को हटा दें जो वीसी संभवतः लागू कर रहा है।

मिश्रण में afxext.h जोड़ना, यह मुझे उपप्रणाली संगतता समस्या की तरह लगता है। यह मेरे Google शोध से एमएफसी का हिस्सा है। Afxext.h एमएफसी (माइक्रोसॉफ्ट फाउंडेशन क्लास) एक्सटेंशन प्रतीत होता है।

क्या आप एमएफसी पर अपनी निर्भरता को हटा सकते हैं? यह किस प्रकार का आवेदन है? (सीएलआर, सेवा, जीयूआई इंटरफ़ेस?) क्या आप प्रोजेक्ट को वीसी 8.0 में एक अप्रबंधित सी ++ प्रोजेक्ट में परिवर्तित कर सकते हैं?

उम्मीद है कि इनमें से कुछ आपकी मदद करेंगे।

3

वर्कअराउंड बहु-थ्रेडेड डीएलएल को ठीक करना है। Simple instructions।संक्षिप्त सारांश:

शिपिंग 8.0 सी क्रम पुस्तकालय DLL (msvcr80.dll) का समर्थन नहीं करता NT 4.0 एक कारण और एक कारण के लिए SP6 केवल: माइक्रोसॉफ्ट पर किसी एक समारोह कॉल GetLongPathNameW को जोड़ा गया जो मौजूद नहीं है एनटी 4.0 पर kernel32.dll में।

CRTLIB.C लाइन 577 पर, GetLongPathNameW पर कॉल है। बस इसे प्रतिस्थापित करें: ret = 0; केवल NT 4.0 पर MSVCR80.DLL के इस बिल्ड का उपयोग करें।

एक बार जब आप काम कर चुके हैं, तो अधिक सामान्य समाधान के साथ आने से तुच्छ होना चाहिए।

-1

विचार यह है कि स्थैतिक पुस्तकालय से जुड़ने के लिए exe की आवश्यकता है।

का प्रयास करें इस "विन्यास गुण", "सामान्य", "MFC का प्रयोग" के लिए "एक स्थिर पुस्तकालय में MFC का उपयोग करें" "विन्यास गुण", "सामान्य", "ATL का प्रयोग" को "स्थैतिक लिंक ATL करने के लिए "

" विन्यास गुण ',' सी \ सी ++ "," कोड जनरेशन "," रनटाइम लायब्रेरी "के लिए" मल्टी-थ्रेडेड (\ मीट्रिक टन) "

टेस्ट प्लेटफार्म बिल्ड मशीन: विजुअल स्टूडियो 2005 विंडो एक्सपी एसपी 2 क्लाइंट मशीन: विंडो एक्सपी एसपी 2 (कोई वीएस2005 स्थापित नहीं)

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