मैं सी डीएल से वीबीChar * से BSTR को कैसे परिवर्तित करें?
से char * कैसे पास कर सकता हूं यहां नमूना कोड है:
void Cfunc(char *buffer,int len)
{
BSTR buf_bstr = SysAllocString((BSTR)buffer);
VBptr.VBfunc(buf_bstr,len);
}
यह फ़ंक्शन काम नहीं कर रहा है, वास्तव में कुछ अन्य मान वास्तविक मूल्य की बजाय वीबी को भेजे जाते हैं ।
क्या कोई भी समाधान का सुझाव दे सकता है?
क्या आप एक मूल स्ट्रिंग बनाम गलत मूल्य बनाम भेजा जा सकता है? –
आपकी (मूल) समस्या चरित्र चौड़ाई प्रतीत होती है। एक बीस्ट्र हमेशा चौड़ा वर्ण होता है (COM सभी यूनिकोड है)। एक कलाकार स्वचालित रूप से वर्णों को विस्तृत नहीं करेगा, लेकिन बाइट्स को wchar_t * के रूप में समझें। – Richard
इस छद्म कोड में मेमोरी रिसाव है। आप SysAllocString() को कॉल करते हैं, लेकिन स्ट्रिंग को डिलीकेट नहीं करते हैं, इसके बाद आपको इसकी आवश्यकता नहीं होती है। – sharptooth