【发布时间】:2013-12-29 04:03:31
【问题描述】:
我用 C# 编写了 COM 类,以及一个这样的函数:
public void SignAttached(
byte[] message,
ref byte[] signedMessage,
string userName = "USER"
)
}
当我尝试从 C++ 代码调用此函数时,我遇到了异常:-“已将等级 12536 的 SafeArray 传递给期望等级为 1 的数组的方法。未知错误 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);
有人可以帮忙吗?
【问题讨论】:
-
您确定这是您正在测试的确切代码吗?这对我来说很好。你能发布一个我们可以看看的重现项目吗?
-
真的!!!!请 - 把项目发给我,这对我很有帮助!!!
标签: c# c++ serialization com safearray