मैं एमएसवीसी के तहत संकलित मेरे सी ++ अनुप्रयोग में अपवादों को अक्षम करना चाहता हूं। मैंने विकल्प को C++ अपवादों को सक्षम करने के लिए स्विच किया है, लेकिन मुझे चेतावनियां मिलती हैं जो मुझे विकल्प/एएचएससी का उपयोग करने के लिए कहती हैं, जिसे मैं नहीं चाहता हूं।क्या मैं एसटीएल में अपवाद अक्षम कर सकता हूं?
मेरे पास मेरे कोड में ब्लॉक/प्रयास ब्लॉक नहीं है, लेकिन मैं एसटीएल का उपयोग करता हूं। मैं ने पाया है कि मैक्रो परिभाषा _HAS_EXCEPTIONS का उपयोग कर = 0 एसटीएल में अपवाद को अक्षम करना चाहिए, लेकिन मैं अभी भी तरह की चेतावनी हो रही है:
warning C4275: non dll-interface class 'stdext::exception' used as base for dll-interface class 'std::bad_typeid' see declaration of 'stdext::exception' see declaration of 'std::bad_typeid'
वहाँ किसी भी तरह से कैसे दूर अपवाद स्विच करने के लिए है एसटीएल है?
नोट: मेरे कोड में मैं आरटीटीआई विकल्पों को भी बंद करना चाहता हूं। मुझे वही चेतावनी मिलती है चाहे आरटीटीआई चालू या बंद हो।
जो मुझे समझ में नहीं आता है वह है जब/एमडी या/एमडीडी का उपयोग करते समय हमें _STATIC_CPPLIB क्यों चाहिए। जो मैंने पढ़ा है, उससे यह कोड libcmt.lib का उपयोग करने का कारण बनता है और msvcrtd.lib नहीं।/एमडी का उपयोग करने का पूरा बिंदु गतिशील रूप से जुड़े पुस्तकालयों और स्थिर लिंक्ड पुस्तकालयों के लिए है। _STATIC_CPPLIB जोड़ना/एमडी ध्वज का उपयोग करने के उद्देश्य को हराने के लिए लगता है। – gnash117
_STATIC_CPPLIB को एमएसवीसी 2010 में बहिष्कृत किया गया है, इसलिए एमएसवीसी 2010 के साथ इसका उपयोग केवल चेतावनियों के एक सेट को दूसरे के साथ बदल देगा। – gnash117
gnash117, MSVC2008 के लिए एमएसडीएन का कहना है कि _STATIC_CPPLIB प्रीप्रोसेसर परिभाषा का उपयोग करते समय आपका एप्लिकेशन msvcprt.lib के बजाय libcmt.lib को लिंक करता है, लेकिन फिर भी msvcrt.lib के माध्यम से मुख्य सीआरटी को गतिशील रूप से लिंक करता है। – Rom098