मुझे एक ही समस्या थी और समाधानों में से कोई भी काम नहीं करता था। समस्या ओपी में तैनात के रूप में वर्ग सहित से आ रहा था:
class AFX_EXT_CLASS CMyClass : public CObject
{
public :
// ....
}
यह एक dll जो मैं एक सांत्वना exe में उपयोग करना चाहते से एक निर्यात वर्ग था। यदि मैं कंसोल एप्लिकेशन को बनाम विज़ार्ड में 'mfc का उपयोग करके' बना देता हूं, तो यह त्रुटि नहीं हो रही थी, लेकिन उस विकल्प के परिणामस्वरूप ऐप की एक अलग संरचना बन गई।
वैसे भी मैंने विभिन्न शीर्षलेखों को शामिल करने का प्रयास किया ताकि यह AFX_EXT_CLASS
को परिभाषित किया गया हो, लेकिन इसे कुछ भी नहीं किया गया। लंबी कहानी छोटी है, समाधान यह है कि हमें डीएफसी से एमएफसी निर्यातित वर्ग को समझने के लिए आवेदन के लिए एमएफसी का उपयोग करने में सक्षम होना है। हम संपादन .vcproj
फ़ाइल द्वारा यह है क्या करना है और जैसा कि नीचे दिखाया लाइन UseOfMFC="2"
डालने कैसे:
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="2" <-------------Insert this line here
CharacterSet="1"
इसके अलावा #include <afx.h>
Stdafx.h को (मैं इसे ऊपरी दाएँ भाग में शामिल करने से पहले शामिल हैं)।
अब रिलीज, साफ और त्रुटि का निर्माण दूर जाना चाहिए।
परियोजना सेटिंग्स से इस विकल्प को बदलने का कोई और तरीका नहीं था। यह विकल्प से अलग है परियोजना गुण >> कॉन्फ़िगरेशन गुण >> सामान्य >> 'एमएफसी का उपयोग'।
अद्यतन
UseOfMFC="2"
चाल शायद उपयोगी कहीं लेकिन जाहिरा तौर पर अगर आप सिर्फ #include <afx.h>
और साझा dll में MFC का उपयोग करने के लिए, की तुलना में इस त्रुटि दूर चला जाता है सेटिंग्स project properties >> General >> 'Use of MFC'
बदल जाते हैं। आप बाद में सेटिंग में बदलाव नहीं करते हैं तो एक संकलक त्रुटि
c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
होते हैं बदल रहा है यह वास्तव में भी प्रोजेक्ट फ़ाइल में UseOfMFC="2"
सेट करता है, तो यह सही तरीका है।
वही समस्या थी, जिसने इसे ठीक किया । –