Call mex Function from cmex SFunction

Call mex Function from cmex SFunction

本文关键字:cmex SFunction from Function mex Call      更新时间:2023-10-16

我使用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. 我不可能做我计划做的事。

有人知道怎么修理它吗?

您给出的代码没有意义。.mexw32文件是动态链接的库(即dll),在C代码中#include语句不用于包含dll。

首先注意,就您的S-Function而言,mexFunctionA与任何其他MATLAB函数没有什么不同。因此,您应该问的问题是"如何从mex文件中调用MATLAB函数?"。

答案是使用函数mexCallMATLAB。

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