को स्थिर रूप से लिंक करते समय विजुअल स्टूडियो 2012 में सबसे सरल प्रकार का नया एमएफसी एप्लिकेशन बनाते समय, और इसे एमएफसी को स्थिर रूप से लिंक करने के लिए सेट करते समय लिंकिंग विफल हो जाती है।अनमोडिफाइड विजुअल स्टूडियो 2012 एमएफसी टेम्पलेट में लिंक त्रुटियां जब एमएफसी
यहां एक gallery of 7 screenshots विज़ार्ड के माध्यम से प्रोजेक्ट के निर्माण से शुरू हो रहा है, इमारत तक (जिसके परिणामस्वरूप लिंकर त्रुटि है)। बीच में कोई स्रोत संपादन नहीं किया गया था।
त्रुटि लॉग राज्य:
1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1> stdafx.cpp
1> TestDlg.cpp
1> Test.cpp
1> Generating Code...
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "void __cdecl AfxRegisterMFCCtrlClasses(void)" ([email protected]@YAXXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)" (?PreUnsubclassControl[email protected]@@[email protected]@@Z) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "public: int __thiscall CMFCControlContainer::SubclassDlgControls(void)" ([email protected]@@QAEHXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>C:\Users\XXXXXXXX\Documents\Visual Studio 2012\Projects\Test\Debug\Test.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
इस बस मुझे है? क्या आपको इस बारे में कोई सुझाव मिलेगा कि इसे कैसे हल किया जाए?
अगर मुझे अनुमान लगाना पड़ा तो मैं कहूंगा कि जादूगर टूटा हुआ है। यदि आप स्थैतिक एमएफसी और सीआरटी से जुड़ रहे हैं [afx.h से ऑटो-जादू सेटअप] (http://msdn.microsoft.com/en-us/library/bx5yfk7t.aspx) आपके लिए इसका ख्याल रखना चाहिए । मान लें कि आप यूनिकोड समर्थन के साथ संकलित कर रहे हैं (ऐसा प्रतीत होता है कि आप हैं, वैसे भी; इन दिनों कौन नहीं है?) स्थिर lib-static-unicode-debug के लिए उचित lib 'uafxcwd.lib' प्रतीत होता है। या तो दूसरी मुक्ति बिल्कुल नहीं होनी चाहिए, या लिंकर ऑर्डर गलत है। मुझे यह जानकर उत्सुकता होगी कि क्या होता है यदि आप * पीआईसी फाइलों को उड़ाने के बाद * यूनिकोड सपोर्टपोर्ट और पुनर्निर्माण बंद कर देते हैं। – WhozCraig
मुझे लगता है कि आपको माइक्रोसॉफ्ट को एक बग के रूप में इसकी रिपोर्ट करनी चाहिए। मुझे लगता है कि आप वीएस 2012 में हेल्प मेन्यू से ऐसा कर सकते हैं। फिर अपने लाइब्रेरी विकल्पों से 'afxnmcdd.lib' जैसे फर्जी लगने वाले सभी पुस्तकालयों को हटा दें, और बस' uafxcwd.lib' वापस जोड़ें। शायद '/ NODEFAULTLIBS' –
@ वॉरेन-पी मैं सहमत हूं। मैं निश्चित रूप से ऐसा कर रहा हूं, दूसरों को इस मुद्दे का पता लगाने के सिरदर्द को बचाने के लिए। उम्मीद है कि (?) यह एक वास्तविक बग है और मेरे सेट-अप के लिए विशिष्ट कुछ नहीं है। – Paul