Вызовите функцию mex из cmex SFunction

Я реализовал комплекс mexFunction используя Visual Studio 2012 и успешно интегрировал его с Matlab. (давайте назовем это mexFunctionA.mexw32 )

Когда я запускаю эту команду в командном окне matlab, я получаю ожидаемые результаты:

mexFunctionA("My1Argument", "My2Argument");

Теперь мне нужно разработать mexFunctionB что вызывает mexFunctionA; mexFunctionB это просто, как это может быть.

С код, который я пытаюсь (внутри 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. Что-то другое.

Кто-нибудь знает, как это исправить?

1

Решение

Код, который вы даете, не имеет смысла. .mexw32 файлы являются динамически связанными библиотеками (т.е. библиотеками DLL) и в коде C #include Заявления не используются для включения DLL.

Во-первых, обратите внимание, что в отношении вашей S-функции mexFunctionA ничем не отличается от любой другой функции MATLAB. Итак, вопрос, который вы должны задать: «Как вызвать функцию MATLAB из файла mex?».

Ответ на это заключается в использовании функции mexCallMATLAB.

Короче нужно убрать #include и переформатировать вызов mexFunctionA в форму, требуемую mexCallMATLAB,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]