2012-02-03 67 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

相關問題