2011-03-30 13 views
5

मेरे पास एक फ़ंक्शन के साथ एक अप्रबंधित DLL है जो एक पॉइंटर को तर्क के रूप में लेता है। मैं 'असुरक्षित' होने के बिना सी # से पॉइंटर कैसे पास करूं?मैं सी # से एक अप्रबंधित डीएलएल में पॉइंटर कैसे पास कर सकता हूं?

[DllImport(@"Bird.dll")] 
private static extern bool foo(ushort *comport); 

शीर्षक में इसी प्रविष्टि:: "प्वाइंटर:

BOOL DLLEXPORT foo(WORD *pwComport); 

जब मैं कोशिश करते हैं और बस भिन्नता यह (&comport), मैं कह रहा कोई त्रुटि मिलती है

यहाँ कुछ उदाहरण कोड है और निश्चित आकार बफर का उपयोग केवल असुरक्षित संदर्भ में किया जा सकता है। "

मैं इसके आसपास कैसे काम करूं?

उत्तर

13

उपयोग ref:

[DllImport(@"Bird.dll")] 
private static extern bool foo(ref ushort comport); 

यह कॉल तो जैसे:

ushort comport; 
foo(ref comport); 

इस तरह इंटरॉप के लिए, मैं WORD के बराबर के रूप UInt16 बजाय ushort उपयोग करने के लिए पसंद करेंगे।

+0

ओह आदमी यह आसान है! –

संबंधित मुद्दे