2012-04-26 79 views
2

我有一個C++ DLL,我使用calllib從Matlab代碼調用。我沒有任何問題調用一個只有輸入參數的C++函數,或者返回mxArray的函數。如何用Matlab的多個輸出調用C++函數?

現在我無法調用具有多個輸出參數的函數。比方說,我需要這個Matlab函數的C++等價物,它返回一個矩陣和一個整數。

function [matrix, status] = foo() 
status = 42; 
matrix = ones(3,2); 
end 

不管我試過了,這讓Matlab的崩潰,例如:

DLL_API void foo(mxArray* iop_matrix, int* op_status) 
    { 
    mxSetM(iop_matrix, 3); 
    mxSetN(iop_matrix, 2); 
    *op_status = 42; 
    } 

但是我可以很容易得到時,我只需要一個輸出參數

DLL_API mxArray* foo(void) 
    { 
    return mxCreateNumericMatrix(3, 2, mxDOUBLE_CLASS, mxREAL); 
    } 

什麼是它的工作C++中這些函數的正確實現?

回答

3

應將Matlab函數的第1個輸出參數聲明爲C函數的輸出參數。 Matlab函數的第二個輸出參數應該聲明爲C函數的第一個輸入參數,它有mxArray **類型等等。與幾個輸出參數

A C++函數應該像

mxArray *foo(mxArray **matrix);

如果函數包含在此情況下,函數被聲明爲

mxArray *foo(mxArray **matrix, mxArray *_1stInpParam, mxArray *_2ndInpParam);

輸入參數
相關問題