1

我已经mexFunction使用 Visual Studio 2012 实现了一个复杂的,并成功地将它与 Matlab 集成。(让我们称之为mexFunctionA.mexw32

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

mexFunctionA("My1Argument", "My2Argument");

现在,我需要开发一个mexFunctionB调用mexFunctionAmexFunctionB很简单。

我正在尝试的CmexFunctionB.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. 别的东西。

任何人都知道如何解决它?

4

1 回答 1

2

您提供的代码是无意义的。 .mexw32文件是动态链接的库(即 dll),并且在 C 代码#include中的语句不用于包含 dll。

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

答案是使用函数mexCallMATLAB

简而言之,您需要删除#include并将调用重新格式化mexFunctionAmexCallMATLAB.

于 2015-09-28T16:07:19.900 回答