С#COM DLL接口:
public interface IShowDialog
{
void showMessage(byte[] array);
}
并在非托管C ++应用程序中调用它:
SAFEARRAY *array;
array = SafeArrayCreateVector(VT_BSTR, 0, 1);
long lidx = 0;
SafeArrayPutElement( array, &lidx, SysAllocString(L"test") );
hr = dlg->showMessage(array);
结果:0x80131533 - COR_E_SAFEARRAYTYPEMISMATCH
答案 0 :(得分:4)
需要从本机代码调用COM接口,其中SAFEARRAY
的内容为VT_I1
个实例。您提供的是VT_BSTR
值,因此会收到错误。
您需要将字符串值转换为VT_I1
值并将其放入数组中。
修改强>
C ++名称中的正确名称为VT_I1
而不是VT_BYTE