2012-02-03 69 views
1

我想从C应用程序中调用用户定义的MATLAB函数,但即使最简单的引擎方案工作也遇到问题。下面是一个应该简单地将a = 1打印到MATLAB命令窗口中的程序。但是当我运行它时,没有任何反应!引擎功能:从C应用程序调用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; 
} 
+0

当你调试你的代码时会发生什么?你看到了什么? – 2012-02-03 12:41:26

+0

我删除了引擎和matlab标签,并把matlab引擎,这可能会让你更感兴趣的访问。 – 2012-02-03 17:56:51

回答

2

stdout输出未发送到MATLAB引擎控制台。您可以使用

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

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

然后,您将有打印engOutput自己指定自己的输出缓冲区。

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

+0

非常感谢 - 工作! :) – user1125353 2012-02-03 18:15:01

相关问题