मैं एक COM इंटरफेस के साथ एक थर्ड पार्टी लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूँ। एक C++ नमूना आवेदन जो एक समारोह के रूप में घोषित उपयोग करता प्रदान की जाती है,: प्रकार पुस्तकालय आयात करने के बादक्यों आयातित प्रकार लाइब्रेरी फ़ंक्शन मूल स्रोत से भिन्न होता है?
HRESULT __stdcall IMyInterface::DoSomething (BSTR id, long State)
, जिसके परिणामस्वरूप डेल्फी कोड है:
procedure DoSomething (const id: WideString; State: Integer); safecall;
सी ++ नमूना आवेदन में, परिणाम (HRESULT) यह निर्धारित करने के लिए प्रयोग किया जाता है कि फ़ंक्शन को ठीक से निष्पादित किया गया था या नहीं।
डेल्फी इस घोषणा को एक प्रक्रिया में क्यों परिवर्तित करता है ताकि मुझे परिणाम न मिल सके?
इसे ठीक करने के लिए मैं क्या कर सकता हूं?
कभी-कभी मुझे पता चला कि डेल्फी उत्पन्न टीएलबी गलत है। मैं जेनरेट की गई टीएलबी फ़ाइल को मैन्युअल रूप से संपादित करना समाप्त करता हूं। प्रक्रिया को प्रक्रिया में बदलने का प्रयास करें और देखें कि यह काम करता है या नहीं। – Hendra
आपको इसकी जांच करने की आवश्यकता नहीं है, परिणाम का उच्च-बिट सेट होने पर डेल्फी अपवाद फेंकता है, यही कारण है कि प्रक्रिया को 'सुरक्षित' घोषित किया जाता है। [यह प्रश्न] देखें (http://stackoverflow.com/questions/96042/whats-safecall) और इसके उत्तर। –
दूसरे विचार पर, कमांड प्रॉम्प्ट से tlibimp चलाने का प्रयास करें -Pt- विकल्प (-Pt- मानचित्र HRESULT सभी इंटरफेस (-T) पर सुरक्षित करने के लिए)। – Hendra