मैं C function के आस-पास एक रैपर लिखने की कोशिश कर रहा हूं जो फ़ंक्शन पॉइंटर और मनमानी उपयोगकर्ता डेटा (void*
) की अपेक्षा करता है। फ़ंक्शन पॉइंटर मैंने यह पता लगाया है कि प्रतिनिधियों का उपयोग करने के साथ कैसे निपटें, लेकिन मैं यह नहीं समझ सकता कि object
को void*
में कैसे परिवर्तित किया जाए।ऑब्जेक्ट को शून्य * और वापस कनवर्ट करें?
मैं इसे एक ref object
बजाय कर सकते हैं, के बाद से है कि एक सूचक की तरह बर्ताव करता AFAIK, लेकिन जब मैं कोशिश है कि मैं की तरह
एक अमान्य प्रकार एक के लिए एक अप्रबंधित VARIANT से एक रूपांतरण के दौरान पता चला था एक अपवाद मिल प्रबंधित वस्तु। सीएलआर में अमान्य वैरिएंट पास करने से अप्रत्याशित अपवाद, भ्रष्टाचार या डेटा हानि हो सकती है।
This "solution" मेरे लिए काम कर सकते हैं, लेकिन मैं समझ वहाँ एक सी DLL करने के लिए मनमाने ढंग से डेटा पारित करने के लिए इतना है कि यह बाद में वापस पारित किया जा सकता एक तरीका हो गया है?
IntPtr के बारे में क्या? –
व्यक्तिगत रूप से, मुझे लगता है कि आप 'फिक्स्ड' ब्लॉक के माध्यम से 'स्ट्रक्चर' में पॉइंटर का उपयोग करना बेहतर करेंगे ... –
@NoIdeaForName: सी डीएलएल 'इंटिप्टर' कोई समस्या नहीं लेगा, लेकिन मैं इसे कैसे बदलूं वापस लौटने पर 'ऑब्जेक्ट' में वापस जाएं (और एक इंटिप्ट पर ऑब्जेक्ट को 'कास्ट' कैसे करें? – mpen