从cmex SFunction调用mex函数

时间:2015-09-28 14:37:39

标签: c++ matlab simulink mex s-function

我使用visual studio 2012实现了一个复杂的mexFunction,并成功地将其与Matlab集成。 (我们称之为mexFunctionA.mexw32

当我在matlab命令窗口中运行此命令时,我得到了预期的结果:

mexFunctionA("My1Argument", "My2Argument");

现在,我需要开发一个mexFunctionB来调用mexFunctionA; mexFunctionB虽然很简单。

我正在尝试的 C 代码(在mexFunctionB.c内)是:

#include "mexFunctionA.mexw32"

(...)

static void mdlOutputs(SimStruct *S, int_T tid)
{
    mexFunctionA("My1Argument", "My2Argument");
}

(...)

这行代码没有编译。

我使用的命令行是:

mex -v mexFunctionB.c -I'C:\patchToMexFunctionA' -L'C:\patchToMexFunctionA' 'mexFunctionA.mexw32'

所以,这是可能的错误:

  1. #include方法错误。
  2. 编译代码的命令行错误。
  3. 我不可能做我打算做的事。
  4. 别的。
  5. 任何人都知道如何修复它?

1 个答案:

答案 0 :(得分:2)

你提供的代码是非感性的。 .mexw32个文件是动态链接库(即dll),而C代码#include语句不用于包含dll。

首先请注意,就您的S函数而言,mexFunctionA与任何其他MATLAB函数没有什么不同。所以你应该问的问题是“如何在mex文件中调用MATLAB函数?”。

答案是使用函数mexCallMATLAB

简而言之,您需要移除#include并将对mexFunctionA的调用重新格式化为mexCallMATLAB所需的表单。