首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未用MATLAB的mex编译的大型C代码

未用MATLAB的mex编译的大型C代码
EN

Stack Overflow用户
提问于 2016-03-02 19:58:11
回答 1查看 101关注 0票数 0

我的总体目标是在我的MATLAB代码中使用C模型。C模型很大(十几个.c文件都是从cModel.c运行的),可以通过以下方式成功编译并在终端中运行

代码语言:javascript
复制
make cModel
cModel.x startingfile.inp

因为C模型是为普通C编译器正确构建的。

然而,MATLAB的mex函数并没有编译这个C代码。我是梅克斯公司的新手,我正在努力弄清楚问题出在哪里。

我认为(并且阅读了一些类似的关于堆栈溢出的问题也支持了这一点),问题在于创建一个mexFunction。我目前的尝试是

代码语言:javascript
复制
/*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):

代码语言:javascript
复制
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。我不知道C代码中有什么(,char **argv)。它们是完全未定义的,它们可能来自包含模型非默认参数的文件名的可选用户输入。

PPS。我需要在matlab中运行C模型,将它指向包含各种模型选项的文本文件。我希望MATLAB能处理这件事,但我开始怀疑.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-02 22:07:59

您不能像调用函数一样调用可执行文件;可执行文件的名称不会像您想的那样“导出”。

一个简单的解决方案怎么样?在MATLAB之外构建可执行文件,并要求MATLAB运行它;下面是一段代码(假设cModel.x与调用它的脚本/函数位于同一个文件夹中):

代码语言:javascript
复制
system('./cModel.x startingfile.inp');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35756908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档