1

我正在尝试从 C 应用程序调用用户定义的 MATLAB 函数,但即使是最简单的引擎场景也无法正常工作。下面是一个应该简单地打印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; 
} 
4

1 回答 1

2

stdout 输出不会发送到 MATLAB 引擎控制台。您可以使用指定自己的输出缓冲区

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

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

然后,您必须engOutput自己打印。

如果打印的目的只是为了验证引擎是否正常工作,您可以转到引擎控制台并键入“a”以查看变量是否已创建。

于 2012-02-03T14:07:39.637 回答