Функции двигателя: вызов MATLAB из приложения C - PullRequest
1 голос
/ 03 февраля 2012

Я пытаюсь вызвать пользовательскую функцию MATLAB из приложения на C, но у меня возникают проблемы при работе даже самого простого сценария движка. Ниже приведена программа, которая должна просто напечатать a = 1 в командном окне MATLAB. Но когда я запускаю его, ничего не происходит!

#include "engine.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() 
{ 
  Engine *ep; 

  if (!(ep = engOpen("\0"))) { 
    fprintf(stderr, "\nCan't start MATLAB engine\n"); 
    return EXIT_FAILURE; 
  } 

  engOutputBuffer(ep, NULL, 0); 

  engEvalString(ep, "a = 1"); 

  engClose(ep); 
  return EXIT_SUCCESS; 
} 

1 Ответ

2 голосов
/ 03 февраля 2012
Вывод

stdout не отправляется на консоль MATLAB Engine. Вы можете указать свой собственный выходной буфер, используя

char engOutput[300];
engOutputBuffer(ep, engOutput, 300);

engEvalString(ep, "disp('test')");

Затем вам придется печатать engOutput самостоятельно.

Если целью печати является только проверка работы двигателя, вы можете перейти к консоли двигателя и набрать «a», чтобы увидеть, что переменная создана.

...