Wie kann ich einen char * von C dll passierenWie konvertiert man char * zu BSTR?
Hier Beispielcode VB:
void Cfunc(char *buffer,int len)
{
BSTR buf_bstr = SysAllocString((BSTR)buffer);
VBptr.VBfunc(buf_bstr,len);
}
Diese Funktion, In der tatsächlichen einigen anderen Werten nicht funktioniert eher auf die VB gesendet werden als die tatsächliche Wert.
Könnte jemand bitte eine Lösung vorschlagen?
Können Sie ein Beispiel für eine ursprüngliche Zeichenfolge im Vergleich zum falschen Wert angeben, der gesendet wird? –
Ihr (ursprüngliches) Problem scheint die Zeichenbreite zu sein. Ein BSTR ist immer ein breites Zeichen (COM ist alles Unicode). Ein Cast erweitert die Zeichen nicht automatisch, sondern interpretiert die Bytes als wchar_t *. – Richard
Dieser Pseudocode weist ein Speicherleck auf. Sie rufen SysAllocString() auf, geben die Zuweisung jedoch nicht mehr frei, wenn Sie sie nicht mehr benötigen. – sharptooth