2009-08-06 89 views
2

我正在处理第三方COM对象,它有一些方法将值传回为BSTR指针。由于VBscript仅支持Variant类型尝试以类似于Object.Method(sMyString)的方式使用,因此会以“类型不匹配”错误结束。VBScript“类型不匹配”问题与“[输入,输出] BSTR *”参数

我怀疑这个错误是由COM对象本身产生的,而不是VBscript解释器,因为对象获取字符串而不是指针。我试图解决它定义字符串数组,但它仍然是相同的错误。

所以我想知道是否有人有类似的问题,并采用了什么解决方法。

只是为了强调。我不能控制COM对象。它在Vendor的应用程序中。我必须“按原样”使用它。

谢谢 阿尔伯特Gareev

回答

6

的规则对于VBScript中允许使用一点相对于其他语言限制的类型。在你的情况下,你有[in, out] BSTR * - 这不支持。 [out]参数允许的唯一类型是VARIANT *。 VBScript将要求该类型为[out,retval]以支持该位置的BSTR类型。当然,每个功能只能有一个[retval],因此有些限制。

无论如何,在您的情况下,由于您无法修改服务器代码,您会遇到困难。我会做的是用C++编写一个COM包装器,将API包装成可以调用的东西。 COM包装可以将[out] BSTR *更改为[out] VARIANT *或其他可用的东西。

相关问题