如何将数据从非托管应用程序传递到 C# COM DLL
本文关键字:DLL COM 应用程序 数据 | 更新日期: 2023-09-27 17:57:28
С# 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
COM 接口需要从具有内容VT_I1
实例的SAFEARRAY
的本机代码调用。 您提供的VT_BSTR
值,因此会收到错误。
您需要将字符串值转换为VT_I1
值并将其放入数组中。
编辑
C++名称中的专有名称是VT_I1
而不是VT_BYTE
- http://msdn.microsoft.com/en-us/library/cc235118(v=PROT.10(.aspx