首页 > 解决方案 > 将回调从 C++ 发送到编译为 C++ 共享库的 MATLAB 函数

问题描述

我有一个 MATLAB 函数,它保存在同名的 .m 文件中:

function a = addmtx(a1, a2, f_callback)
    a = a1 + a2;
    f_callback(a1*2, a2*2);
end

然后我通过 matlab 库编译器将该 .m 文件编译为 c++ 共享库。为 C++ 编译的 addmtx.h 头文件具有以下功能:

extern LIB_mLibAddmtx_CPP_API void MW_CALL_CONV addmtx(int nargout, mwArray& a, const mwArray& a1, const mwArray& a2, const mwArray& f_callback);

可以看到,MATLAB函数的最后一个参数是回调,但是在C++代码中,是作为mwArray&引入的。 现在如何将 C++ 函数作为回调发送到这个 MATLAB 函数?

之前尝试过使用mclCreateSimpleFunctionHandle()函数,但是这个函数返回的mxArray*类型与mwArray&不兼容。

标签: c++matlabcallbackshared-libraries

解决方案


推荐阅读