我写的COM类在C#中,和一个函数调用托管代码是这样的:需要从托管C++代码
public void SignAttached(
byte[] message,
ref byte[] signedMessage,
string userName = "USER"
)
}
当我尝试从C调用此函数++代码,我exeption : - “秩12536的安全数组已被传递给需要秩1.Unknown错误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);
和compilator创建包装我N *的功能.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);
任何人可以帮助?
您确定这是您测试的确切代码吗?这对我来说很好。你能发布一个我们可以看看的repro项目吗? –
真的!!!!请 - 发送给我的项目,这是如此的帮助我! – Alex
我已经在这里上传了一个:https://dl.dropboxusercontent.com/u/42400504/MyClassLibrary.zip –