我用 C# 编写了 COM 类,以及一个这样的函数:
public void SignAttached(
byte[] message,
ref byte[] signedMessage,
string userName = "USER"
)
}
当我尝试从 C++ 代码调用此函数时,我有异常:-“已将等级 12536 的 SafeArray 传递给期望等级为 1.Unknown error 0x80131538 的数组的方法”,并且每次都更改第一等级,C++ 代码:
SAFEARRAY*message = SafeArrayCreateVector(VT_UI1, 0, 1);
SAFEARRAY*signedMessage = SafeArrayCreateVector(VT_UI1, 0, 1);
_bstr_t userName = "USER";
pInstanse ->SignAttached(message,&signedMessage,userName);
和编译器在 *.tlh 文件中为函数创建包装器:
HRESULT SignAttached (
SAFEARRAY * message,
SAFEARRAY * * signedMessage,
_bstr_t userName );
如果使用帮助 oleviewer(IDL 语言)导出功能查看 *.tlb 文件是:
HRESULT SignAttached(
[in] SAFEARRAY(unsigned char) message,
[in, out] SAFEARRAY(unsigned char)* signedMessage,
[in, optional, defaultvalue("USER")] BSTR userName);
有人可以帮忙吗?