我的總體目標是在我的MATLAB代碼中使用C模型。的C型是大(超過一打.c文件,它們是從cModel.c所有運行),並且可以成功編譯然後在終端通過大型C代碼沒有用MATLAB的mex編譯
make cModel
cModel.x startingfile.inp
運行的C模型是爲正常的C正確地建編譯器。
但是,MATLAB的mex函數沒有編譯這個C代碼。我是mex的總新手,我正在試着理解問題所在。
我想(並閱讀一些類似的問題,在stackoverflow支持這一點),該問題是圍繞創建一個mexFunction。我嘗試目前
/*function AA_mexWrapper.c*/
/*Include the MATLAB mex header*/
#include "mex.h"
/* The gateway function */
void mexFunction()
{
/* Main() of the C Model*/
cModel(); /* cModel writes files. We don't care about the nonexistant returned variables*/
}
這會產生錯誤(使用MEX AA_mexWrapper cModel):
Error using mex
/Users/Filepath/ cModel.c:215:5: warning:
implicit declaration of function 'main' is invalid in C99 [-Wimplicit- function-declaration]
main(int argc, char **argv);
^
/Users/Filepath/ cModel.c:215:10: error:
expected expression
main(int argc, char **argv);
^
1 warning and 1 error generated.
什麼是MATLAB做什麼,如何解決呢?我真的只是需要它像對待普通的C編譯器那樣對待cModel.c。
PS。我不知道什麼(int argc,char ** argv)在C代碼中。它們完全未定義,大概它們來自包含模型非默認參數的文件名的可選用戶輸入。
PPS。我將需要在matlab中運行C模型,方法是將它指向包含各種模型選項的文本文件。我希望MATLAB可以解決這個問題,但我開始懷疑...
使用正確的函數聲明。你使用的是自1989年以來過時的。 – Olaf
@Olaf - 我沒有寫C模型不幸。他們有什麼問題? –
如果您不打算將任何變量傳入或傳出來自MATLAB變量的mex函數,那麼使用mex編譯代碼就沒有意義了。只需使用「系統」以正常方式調用您的可執行文件即可。 – Peter