使用 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