अप्रबंधित डीएल के साथ सी # इंटरऑप

जो मैं बनाने की कोशिश कर रहा हूं वह एक सीयूडीए त्वरित फ्रैक्टल जनरेटर है। मैं ui बनाने के लिए सी # का उपयोग करना चाहता हूं, लेकिन फ्रैक्टल छवियों को एक डीएल में संकलित अप्रबंधित cuda c द्वारा उत्पन्न किया जा रहा है। कुछ ट्यूटोरियल्स के बाद, मैंने सरल डेटा के साथ इंटरऑप काम करने में कामयाब रहा है, लेकिन मुझे बिटमैप छवि बनाने में कठिनाई हो रही है और इसे सी # एप्लिकेशन पर वापस भेज दिया गया है।

मैं सीयूडीए का उपयोग करके पिक्सेल डेटा के साथ डीएल में एक बफर एक साथ रख सकता हूं, लेकिन सी तेज आवेदन में बिटमैप बनाने के लिए मैं उस बफर को पॉइंटर का उपयोग कैसे कर सकता हूं?

0
क्या आप कुछ कोड पोस्ट कर सकते हैं जो बिटमैप को आप सी # देखना चाहते हैं?
जोड़ा लेखक doctorlove, स्रोत

1 उत्तर

ऐसा करने के कुछ तरीकों में से एक:

यदि आपका मूल कार्य इस तरह दिखता है:

void foo(void *bitmap);

आप घोषणा करने के लिए पी/Invoke का उपयोग कर सकते हैं:

[DllImport(...)]
public static unsafe void foo(void *bitmap);

और उसके बाद इसे निम्नानुसार उपयोग करें:

unsafe
{
    byte[] buffer = new byte[...];
    fixed (void *pBuffer = buffer)
    {
        foo(pBuffer);
    }
}

ध्यान दें कि आपको असुरक्षित कोड (प्रोजेक्ट सेटिंग्स में, बिल्ड टैब) की अनुमति देनी चाहिए।

0
जोड़ा
धन्यवाद। प्रश्न का पालन करें, मैं उस बफर का उपयोग बिटमैप छवि बनाने के लिए कैसे करूं जिसका उपयोग मैं एक चित्र बॉक्स के लिए कर सकता हूं? क्षमा करें अगर यह प्रश्न पहले की तुलना में डम्बर लगता है लेकिन मैं सी # के लिए नया हूं।
जोड़ा लेखक William Henry Langhoff, स्रोत
मुझे यकीन नहीं है कि आप WinForms में ऐसा कैसे करते हैं। मैं देखता हूं कि पिक्चरबॉक्स नियंत्रण में ऐसी छवि है जिसका नाम आपको सेट करना चाहिए। जैसा कि यहां बताया गया है, आप बाइट सरणी से एक छवि ऑब्जेक्ट बना सकते हैं: codeproject.com/Articles/15460/…
जोड़ा लेखक MaMazav, स्रोत