मेरे पास एक सी # प्रोजेक्ट है जो सी ++ डीएल का उपयोग कर रहा है। (विजुअल स्टूडियो 2010 में)
मुझे सी # कोड से सी ++ फ़ंक्शन में int की एक सरणी पास करनी है और सी ++ फ़ंक्शन सरणी में कुछ तत्व जोड़ देगा, जब नियंत्रण सी # कोड पर वापस आता है, सी # कोड उसी सरणी में तत्व भी जोड़ देगा ।
प्रारंभ में मैंने सी # कोड में एक सरणी (आकार 10000) घोषित की और सी ++ कोड तत्व जोड़ने में सक्षम है (क्योंकि यह केवल int की एक सरणी थी, स्मृति आवंटन समान है), लेकिन समस्याएं मुझे रन टाइम त्रुटि मिली है सरणी के बाहर की ओर पहुंचने के कारण।
सी # सरणी को सी ++ से कैसे पास करें और अतिरिक्त आइटम के साथ इसे वापस # पर वापस कर दें?
मैं आकार 100000 तक बढ़ा सकता हूं लेकिन फिर मुझे नहीं पता कि सी ++ कोड कितना तत्व जोड़ देगा (यहां तक कि यह केवल 1 तत्व हो सकता है)।
तो क्या दोनों या अन्य तरीकों के लिए एक आम डेटा संरचना (गतिशील सरणी) मौजूद है? मैं विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं।
ऐसा कुछ मैं करना चाहता हूं।
पीएस: संकलित कोड नहीं, और यहां मैंने int सरणी के बजाय चार सरणी का उपयोग किया।
सी # कोड
[DllImport("example1.dll")]
private static extern int fnCPP (StringBuilder a,int size)
...
private void fnCSHARP(){
StringBuilder buff = new StringBuilder(10000);
int size=0;
size = fnCPP (buff,size);
int x = someCSHARP_fu();
for (int i=size; i < x+size; i++) buff[i]='x';// possibility of run time error
}
सी ++ कोड
int fnCPP (char *a,int size){
int x = someOtherCpp_Function();
for(int i=size; i < x+size ; i++) a[ i ] = 'x'; //possibility of run time error
return size+x;
}
हमें कुछ कोड दिखाएं –
क्या आप सी ++/सीएलआई का उपयोग कर सकते हैं? क्या आप सी ++/सीएलआई का उपयोग कर सकते हैं? –
आप किसी सरणी में आइटम "जोड़" नहीं सकते हैं। Arrays आकार में तय कर रहे हैं। एक अलग डेटा संरचना का प्रयोग करें या बदलें कि आप दोनों के बीच इंटरफ़ेस कैसे करते हैं। –