Я поддерживаю программу, которая может быть автоматизирована через COM. Обычно клиенты используют VBS для выполнения своих сценариев, но у нас есть несколько клиентов, которые используют поддержку Matlab ActiveX и имеют проблемы вызов методов COM-объектов с помощью параметра NULL.
Они спросили, как они это делают в Matlab, - и я прорабатывал документацию Mathworks COM/ActiveX в течение дня или около того теперь и не может понять это.
Их примерный код может выглядеть примерно так:
function do_something()
OurAppInstance = actxserver('Foo.Application');
OurAppInstance.Method('Hello', NULL)
end
где NULL
есть где на другом языке мы будем писать NULL
или nil
или Nothing
, или, конечно же, передать объект. Проблема в том, что это необязательно (и они реализованы в качестве необязательных параметров в большинстве, но не все, случаи) - эти методы ожидают получить NULL довольно часто.
Они говорят мне, что они пробовали []
(что из моего показа показалось наиболее вероятным), а также ''
, Nothing
, 'Nothing'
, None
, NULL
и 0
, Я понятия не имею, сколько из них даже допустимых ключевых слов Matlab - конечно, в этом случае не работает.
Может ли кто-нибудь помочь? Какой синтаксис Matlab для нулевого указателя/объекта для использования в качестве параметра метода COM?
Обновление: Спасибо за все ответы! К сожалению, ни один из ответов не работает, даже не libpointer
. Ошибка во всех случаях одинакова:
Error: Type mismatch, argument 2
Этот параметр в библиотеке типа COM описан в RIDL как:
HRESULT _stdcall OurMethod([in] BSTR strParamOne, [in, optional] OurCoClass* oParamTwo, [out, retval] VARIANT_BOOL* bResult);
В рассматриваемом классе используется один интерфейс, спускающийся с IDispatch.