如何将单个元素 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 文件中。
我有一个进程外的 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 文件中。