Можно ли вызвать метод COM с подписью
HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)
из VBScript?
Следующее:
Dim a; Dim b; component.Foo "something", a, b
выдает ошибку о несовместимых типах.
Я все еще могу изменить сигнатуру метода.
Похоже, выходные параметры не поддерживаются; параметры ByRef / [in, out] есть, но только для параметров VARIANT.
ByRef
[in, out]
VARIANT
Из следующей статьи базы знаний:
ИНФОРМАЦИЯ: Ошибки несоответствия типов при передаче параметров из компонента ASP в компонент Visual Basic @ support.microsoft.com
" VBScript поддерживает только параметры VARIANT ByRef. Вы можете использовать VBScript для вызова процедуры, которая принимает строки ByRef, но поведение компонентов по умолчанию, созданных с помощью Visual Basic, состоит в том, что при попытке передать ByRef происходит ошибка с ошибкой несоответствия типов. параметров для этих компонентов. По умолчанию функция приведения типов в OLE Automation не работает, когда ее просят преобразовать вариант ByRef в любой другой тип ByRef."
Также вот другие ссылки по теме:
Входите, выходите, выходите, решитесь уже @ блоги MSDN Ошибка VBScript «Несоответствие типов» с параметром «[in, out] BSTR *» SO Вопрос