如何将单个元素 safearray 传递给 MATLAB 中的 COM 函数

How to pass single element safearray to COM function in MATLAB

我有一个进程外的 COM 服务器,它提供具有以下签名的函数 f:

f = void f(handle, int32, SafeArray(int32), SafeArray(int32))

当我尝试时

h = actxserver('Server.Object.1');
x0=int32([0 0]);
y0=int32([0 0]);
h.f(int32(0), x0, y0)

一切正常。但是

h = actxserver('Server.Object.1');
x0=int32([0]);
y0=int32([0]);
h.f(int32(0), x0, y0)

给出错误信息

Error using COM.Server_Object_1/f
Error: Type mismatch, argument 2

Error in test (line 4)
h.f(int32(0), x0, y0)

我也试过这个功能

feature('COM_SafeArraySingleDim', 0 or 1)

没有效果。 我感觉它在某些早期版本的 MATLAB 中有效,但我不确定。目前我正在使用 2019b.

知道如何进行这项工作吗?

根据 Mathworks 技术支持,这是不可能的。我最终将该函数包装在一个 c++ mex 文件中。