Com 调用VBScript过程结果类型不匹配错误

Com 调用VBScript过程结果类型不匹配错误,com,vbscript,variant,Com,Vbscript,Variant,我的一个COM对象具有以下成员,该成员在第二个参数中返回字节数组及其长度 HRESULT GetBinaryData([out] VARIANT *pVal, [out] long *pLen); 仅供参考 我试图在VBScript中调用此memeber,但在所有试验中均失败。以下是我的vbscript代码片段: Set op = CreateObject("myserver") dim bytearray() op.GetBinaryData bytearray, bytearray_len

我的一个COM对象具有以下成员,该成员在第二个参数中返回字节数组及其长度

HRESULT GetBinaryData([out] VARIANT *pVal, [out] long *pLen);
仅供参考

我试图在VBScript中调用此memeber,但在所有试验中均失败。以下是我的vbscript代码片段:

Set op = CreateObject("myserver")
dim bytearray()
op.GetBinaryData bytearray, bytearray_len
但在第3行,遇到类型不匹配错误

如何将过程的结果输入vbscript变量

提前感谢。

考虑在COM级别使用retval:

HRESULT GetBinaryData([out, retval] VARIANT *pVal);

因为返回值是安全射线,您现有的C++仍然有效。在本例中,SAFEARRAY是一个足够的返回值,可以为调用方提供数组和长度。即C++代码保持原样。< /P> 您的VBScript代码变为:

Option Explicit
Set op = CreateObject("myserver")
Dim byteArray, lenArray
byteArray = op.GetBinaryData()
lenArray = UBound(byteArray) - LBound(byteArray) + 1
尽管通过SAFEARRAY或等效对象(例如IXMLDOMDocument)只能有一个retval,但您可以为VBScript打包许多返回值

Option Explicit
Set op = CreateObject("myserver")
Dim byteArray, lenArray
byteArray = op.GetBinaryData()
lenArray = UBound(byteArray) - LBound(byteArray) + 1