获取使用传递引用的COM对象的返回值

时间:2020-02-04 21:51:05

标签: python matlab com

我有一个专门针对小型特定行业的利基程序,该程序具有用于与之交互的COM服务器。从VBA调用时,此COM服务器工作正常,但我无法使其与MATLAB或Python一起使用。任何返回值的函数都会出错,但是我仍然可以使用不会传回任何东西的方法,例如加载文件。

我认为问题在于所有方法都需要通过引用传递。相反,所有方法都将错误号作为每个方法的输出传回(如果没有错误,则返回0,否则返回某个值)。例如,在VBA中,您可以使用方法err = GetFileName(fileName)fileName变量可以为空,但是在方法调用之后,它被设置为文件名,并且err包含错误号。

当我尝试调用除MATLAB或Python中的错误号之外还传递一些东西的任何方法时,我收到类型不匹配或缺少参数错误Error: Type mismatch, argument 1。 MATLAB中的methodsview函数返回了以下方法。我不太了解MATLAB数组的类型,因为传递空数组仍然会产生错误。

以下是我如何尝试的示例:

api = actxserver('ProgID')
ans = invoke(api,"methodname")
% this will give a missing parameter error
ans = invoke(api,"methodname",[])
% this will give a mismatch error for input 1 (the empty array)
[ans ans2] = invoke(api,"methodname",[])
% also a mismatch error for input 1
[ans ans2] = invoke(api,"methodname")
% missing parameter error

它没有任何改变,我将空数组设为变量或尝试创建仅返回值的函数句柄。

f = @(a) a

我尝试过this,但是它说MWObjectArray不存在。

coder.ref似乎仅用于C ++。

This似乎没有MATLAB数组数据类型。

This说可以通过使用多个输出变量来进行引用传递,但是我仍然遇到类型不匹配或缺少参数错误的情况。

有人遇到类似问题吗?返回类型不匹配错误时,是否有办法获取有关所需的确切类型的更多信息?

MATLABmethodview

0 个答案:

没有答案
相关问题