如何使用 Matlab 的多个输出调用C++函数
How to call C++ function with multiple outputs from Matlab?
我有一个C++DLL,我使用calllib
从Matlab代码调用它。我可以毫不费力地调用仅具有输入参数的 C++ 函数或返回 mxArray
的函数。
现在我在调用具有多个输出参数的函数时遇到问题。比方说,我需要这个 Matlab 函数的 C++ 等价物,它返回一个矩阵和一个整数。
function [matrix, status] = foo()
status = 42;
matrix = ones(3,2);
end
无论我尝试什么,它都会使Matlab崩溃,例如:
DLL_API void foo(mxArray* iop_matrix, int* op_status)
{
mxSetM(iop_matrix, 3);
mxSetN(iop_matrix, 2);
*op_status = 42;
}
但是,当我只需要一个输出参数时,我可以轻松地让它工作
DLL_API mxArray* foo(void)
{
return mxCreateNumericMatrix(3, 2, mxDOUBLE_CLASS, mxREAL);
}
在C++中,这种功能的正确实现是什么?
Matlab 函数的第一个输出参数应声明为 C 函数的输出参数。Matlab 函数的第二个输出参数应声明为 C 函数的第一个输入参数,该参数具有mxArray **
类型,依此类推。
具有多个输出参数的C++函数应如下所示
mxArray *foo(mxArray **matrix);
在这种情况下,如果函数包含输入参数,则该函数声明为
mxArray *foo(mxArray **matrix, mxArray *_1stInpParam, mxArray *_2ndInpParam);
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 使用静态变量的递归调用的不同输出
- cmake add_custom_command + Xcode:多输出 = 多命令调用
- 调用 cout 时如何在结构中输出常量文本?
- 我的 cout 上有一个奇怪的输出,它把答案放在第一位,然后在我调用它的地方放一个奇怪的输出.我该怎么办?
- 函数调用导致没有输出
- 使用 Node.js N-API 调用 C 函数时,不会显示预期的输出
- 如何调用继承的重载运算符<<并在派生类的输出中添加更多文本?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 当我从头文件和实现文件调用我的函数到我的主文件时,我没有得到任何输出
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- 为什么在杂注 omp 关键之后多次调用 printf 会产生乱码输出?
- std::cout 如果从自定义分配器 (Visual Studio 2019) 调用,则不会输出
- 将 Linux system() 调用命令的输出重定向到仅可变的
- 干净取消在输入/输出调用中被阻止的 std::线程
- 不同的输出调用clang上的malloc应用编译器选项-00和-03
- 从缺少 printf 语句输出C++调用 C API
- 如何使用 Matlab 的多个输出调用C++函数
- 无法使用重定向标准输出调用 g++