【发布时间】:2011-01-17 17:08:45
【问题描述】:
我维护了一个可以通过 COM 自动化的程序。通常客户使用 VBS 来编写脚本,但我们有几个客户使用 Matlab 的 ActiveX 支持并且在使用 NULL 参数调用 COM 对象方法时遇到了问题。 p>
他们问过他们是如何在 Matlab 中做到这一点的 - 我已经在 Mathworks' COM/ActiveX documentation 上搜索了一天左右,但无法弄清楚。
他们的示例代码可能如下所示:
function do_something()
OurAppInstance = actxserver('Foo.Application');
OurAppInstance.Method('Hello', NULL)
end
NULL 是另一种语言的位置,我们可以写成NULL 或nil 或Nothing,当然,也可以传入一个对象。问题是这是可选的(在大多数情况下,这些都是作为可选参数实现的,但不是全部)——这些方法经常会得到 NULL。
他们告诉我他们已经尝试过[](从我的阅读来看最有可能)以及''、Nothing、'Nothing'、None、Null 和 0 .我不知道其中有多少是有效的 Matlab 关键字——在这种情况下肯定没有。
有人可以帮忙吗?用作 COM 方法参数的空指针/对象的 Matlab 语法是什么?
更新:感谢您迄今为止的所有回复!不幸的是,似乎没有一个答案有效,甚至libpointer。错误在所有情况下都是一样的:
Error: Type mismatch, argument 2
COM 类型库中的这个参数在 RIDL 中被描述为:
HRESULT _stdcall OurMethod([in] BSTR strParamOne, [in, optional] OurCoClass* oParamTwo, [out, retval] VARIANT_BOOL* bResult);
有问题的 coclass 实现了从 IDispatch 下降的单个接口。
【问题讨论】:
标签: com matlab parameters automation null