मैं सी ++ घटक डीएल विकसित कर रहा हूं जिसका उपयोग सी या सी ++ अनुप्रयोगों द्वारा किया जा सकता है। उजागर dll कार्यों के रूप में इस प्रकार हैक्या सी प्रोग्राम प्रोग्राम C++ अपवादों को संभाल सकता है?
#include <tchar.h>
#ifdef IMPORT
#define DLL __declspec(dllimport)
#else
#define DLL __declspec(dllexport)
#endif
extern "C" {
DLL bool __cdecl Init();
DLL bool __cdecl Foo(const TCHAR*);
DLL bool __cdecl Release();
}
इन कार्यों के आंतरिक कार्यान्वयन जो उजागर नहीं कर रहे हैं सी ++ वर्ग हैं मैं इस शैली dll या तो सी या सी ++ क्षुधा में इस्तेमाल किया जा सकता का उपयोग कर मान रहे हैं। समस्या यह है कि मैं किसी भी प्रकार के C++ अपवाद (यानी bad_alloc) को संभाल नहीं पाता हूं और मैंने यह सामान कॉलर (उच्च परत) पर छोड़ा है। मेरे सहयोगियों के साथ बहुत बहस के बाद मुझे सभी अपवादों को पकड़ना चाहिए और त्रुटि कोड या कम से कम झूठी वापसी करनी चाहिए क्योंकि सी आवेदन के मामले में यह सी ++ अपवादों को संभाल नहीं सकता है? क्या यह सच है? और मुझे सामान्य रूप से क्या करना चाहिए? यदि आप घटक विकसित कर रहे हैं जो अन्य सिस्टम द्वारा उपयोग किया जाएगा तो exeptions को संभालने के लिए अंगूठे का एक नियम है।
नहीं, सी – sje397
में अपवाद जैसी कोई चीज़ नहीं है http://www.on-time.com/ddj0011.htm – DumbCoder
सी ++ सी पंजीकृत कर सकता है 'std :: set_unexpected()' के माध्यम से बिना अपवादों के अपवाद हैंडलर के लिए अपवाद हैंडलर के रूप में -लिंक/'बाहरी सी' फ़ंक्शन। यदि उस के लिए उलझन वाला नाम ज्ञात है तो आप इसे सीधे सादे सी से कॉल कर सकते हैं। अन्यथा, आप 'बाहरी सी' का पर्दाफाश कर सकते हैं इसके लिए रैपर। यह नहीं कि यह एक सुविधाजनक इंटरफ़ेस है, लेकिन यदि यह पूरी तरह से अपरिहार्य है कि आपकी लाइब्रेरी अपनी सीमाओं के बाहर प्रदूषित है ... –