我的总体目标是在我的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