¿Cómo puedo pasar un char * desde C DLL a VBCómo convertir char * a BSTR?
Aquí es código de ejemplo:
void Cfunc(char *buffer,int len)
{
BSTR buf_bstr = SysAllocString((BSTR)buffer);
VBptr.VBfunc(buf_bstr,len);
}
Esta función no está funcionando, en reales algunos otros valores son enviados a la VB en lugar de la actual valor.
¿Alguien podría sugerir una solución?
¿Puedes dar un ejemplo de una cadena original frente al valor incorrecto que se envía? –
Su problema (original) parece ser el ancho del carácter. Un BSTR siempre tiene caracteres anchos (COM es todo Unicode). Un elenco no ensanchará automáticamente los caracteres, pero interpretará los bytes como wchar_t *. – Richard
Este pseudocódigo presenta una pérdida de memoria. Llama a SysAllocString(), pero no desasigne la cadena después de que ya no la necesite. – sharptooth