Come posso passare un char * dalla DLL C a VBCome convertire char * in BSTR?
Ecco il codice di esempio:
void Cfunc(char *buffer,int len)
{
BSTR buf_bstr = SysAllocString((BSTR)buffer);
VBptr.VBfunc(buf_bstr,len);
}
Questa funzione non funziona, In effettivi alcuni altri valori vengono inviati al VB, piuttosto che l'attuale valore.
Qualcuno potrebbe suggerire una soluzione?
Puoi dare un esempio di una stringa originale rispetto al valore errato che viene inviato? –
Il tuo problema (originale) sembra essere la larghezza del carattere. Un BSTR è sempre caratteri ampi (COM è tutto Unicode). Un cast non allargherà automaticamente i caratteri, ma interpreterà i byte come wchar_t *. – Richard
Questo pseudocodice presenta una perdita di memoria. Si chiama SysAllocString(), ma non rilasciare la stringa dopo che non ne hai più bisogno. – sharptooth