उदाहरण सी एपीआई हस्ताक्षर:सी # में पी/इनवॉक का उपयोग करके मैं एक सरणी में पॉइंटर कैसे पास कर सकता हूं?
void Func(unsigned char* bytes);
सी में, जब मैं एक सरणी के लिए एक सूचक पास करना चाहते हैं, मैं कर सकते हैं:
unsigned char* bytes = new unsigned char[1000];
Func(bytes); // call
मैं कैसे पी करने के लिए ऊपर एपीआई अनुवाद नहीं करते/इस तरह से आमंत्रित करें कि मैं एक सूचक को सी # बाइट सरणी में पास कर सकता हूं?
पहला दृष्टिकोण क्यों काम करेगा, और दूसरा काम नहीं करेगा। विंडोज़ ऐप पर मैं यही सामना कर रहा हूं। – moubarak
मुझे पता है कि यह पोस्ट थोड़ा पुराना है लेकिन 'मार्शल .इज़ऑफ (ऑब्जेक्ट)' सरणी के साथ काम नहीं करता है। मुझे पूरा यकीन है कि अगर आप इसे एक सरणी पास करते हैं तो आपको अपवाद मिलेगा लेकिन मेरे पास अभी कोशिश करने के लिए मेरे सामने वीएस खुला नहीं है। किसी सरणी के आकार को सही ढंग से निर्धारित करने के लिए, आपके उदाहरण के लिए कोड 'मार्शल। सिज़ऑफ (टाइपोफ (बाइट)) * ar.Length' होगा। – 9ee1
हां, आप सही 9 1 हैं। मार्शल.SizeOf एक संरचना के लिए इस्तेमाल किया जा सकता है लेकिन एक सरणी नहीं। मैंने तदनुसार उदाहरण कोड अपडेट किया है। धन्यवाद। – asponge