使用 MatlabR2012a 编译到 LINUX Matlab 代码时出错

Posted

技术标签:

【中文标题】使用 MatlabR2012a 编译到 LINUX Matlab 代码时出错【英文标题】:Error while compiling to LINUX Matlab Code with MatlabR2012a 【发布时间】:2014-11-26 13:02:28 【问题描述】:

我正在尝试将 Matlab 函数编译为 C。 这里有函数的声明:

function [SpdLmt0, SpdLmt1, SpdLmt2, SpdLmt3, SpdLmt4, SpdLmt5, SpdLmt6,
    SpdLmt7, SpdLmt8, SpdLmt9, SLDst0, SLDst1, SLDst2, SLDst3, SLDst4,
    SLDst5, SLDst6, SLDst7, SLDst8, SLDst9, IntTyp1, IntTyp2,
    IntTyp3, IntTyp4, IntTyp5, IntTyp6, IntTyp7, IntTyp8, IntTyp9,
    IntTyp10, IntDst1, IntDst2, IntDst3, IntDst4, IntDst5, IntDst6,
    IntDst7, IntDst8, IntDst9, IntDst10, StpDst1, StpDst2, StpDst3,
    StpDst4, StpDst5, StpDst6, StpDst7, StpDst8, StpDst9, StpDst10,
    BumpDst1,BumpDst2,BumpDst3,BumpDst4,BumpDst5,BumpDst6,BumpDst7,
    BumpDst8,BumpDst9,BumpDst10,SlopeVal1,SlopeVal2,SlopeVal3,SlopeVal4,
    SlopeVal5,SlopeVal6,SlopeVal7,SlopeVal8,SlopeVal9,SlopeVal10,
    SlopeDst1,SlopeDst2,SlopeDst3,SlopeDst4,SlopeDst5,SlopeDst6,
    SlopeDst7,SlopeDst8,SlopeDst9,SlopeDst10,Radius1,Radius2,Radius3,
    Radius4,Radius5,Radius6,Radius7,Radius8,Radius9,Radius10,CurvDst1,
    CurvDst2,CurvDst3,CurvDst4,CurvDst5,CurvDst6,CurvDst7,CurvDst8,
    CurvDst9,CurvDst10,UDP_error] = parser(UDP, longitud)

所以我从 LINUX 的“UDP 接收”Simulink 块接收 UDP 数据。接收到的消息由 100 个以 ASCII 码编码的数据(函数的输出)组成。我的函数“解析器”接收 UDP 消息并将其解码以获得所需的输出。 问题是当我尝试使用 Simulink Coder 编译它时,我收到以下消息:

错误:发生错误 - 中止

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

如果没有关于函数的更多信息,很难确切知道可能发生的情况,但建议您稍微调整函数调用本身。有了这么多返回值,MATLAB Coder 完全有可能在转换函数时遇到错误。有这么多返回值是很不寻常的,它可能会导致问题。

我建议将您的返回值放入单个数据结构(结构或数组,具体取决于合适的内容)。这将简化您的函数调用,并可能帮助 Coder。

【讨论】:

以上是关于使用 MatlabR2012a 编译到 LINUX Matlab 代码时出错的主要内容,如果未能解决你的问题,请参考以下文章

Windows 8 上的 Matlab 构建器 NE / MCR

错误:“(”标记之前的预期构造函数、析构函数或类型转换?

Matlab 2012a 与 Windows SDK 7.1

matlab2012a解决办法(转载)

Matlab 2012a Mex 在 Mountain Lion 上使用 Xcode 4.5

各位大侠,我新装matlab R2012a 安装后软件激活时出现这个问题,见下图