मेरे पास क्लास टेस्ट के साथ एक DLL है I हेडर:
वर्ग MY_EXPORT परीक्षण {सार्वजनिक: int doit (const स्ट्रिंग और str); };और स्रोत:
int test :: doit (const स्ट्रिंग और str) {वापसी int (str.length ()); }अब मैं इसे mex फ़ाइल से उपयोग करता हूं:
void mexfunction (int nlhs, mxArray * plhs [], int nrhs, const mxArray * prhs []) {string str (" नमस्ते!"); टेस्ट * टी = नया टेस्ट (); टी - & gt; डॉट (str); }समस्या, उस वेरिएबल
str को विधि
doit से सही ढंग से पारित नहीं किया गया है विधि के अंदर यह rabish शामिल हैं मैंने पाया कि संदर्भ द्वारा पारित किसी भी ऑब्जेक्ट के साथ ऐसा होता है। क्या मैं गलत हूं? कृपया मदद करें।
पीएस: अगर मैं 'इंटेलैट (' एएनएसईटी) (कॉन्स्ट चार *) 'को सब कुछ ठीक से काम करने के लिए घोषणा बदलता हूं
समस्या यह है:
libmex.dll (और एक संपूर्ण Matlab 2010a / 2010b) का उपयोग करता है Microsoft.VC80.CRT (संस्करण = 8.0.50727.4053)
लेकिन आपका विजुअल स्टूडियो Microsoft.VC90.CRT (संस्करण = 9.0.21022.8) का उपयोग करता हैयदि आप एक C ++ mex फ़ाइल लिखते हैं, तो आपको अपने मेक्स डेल में सीआरटी लिब का एक ही संस्करण का प्रयोग करें जो कि मैटलब उपयोग करता है। आप Visual C ++ 2005 (SP1) एक्सप्रेस संस्करण को मुफ्त में स्थापित कर सकते हैं, और इसके साथ मेक्स फ़ाइल संकलित कर सकते हैं।
Comments
Post a Comment