主要内容

排除编译器问题

编译器版本不匹配错误

描述

构建过程产生编译器版本不匹配错误。

行动

  1. 查看可用的受支持和兼容的编译器列表金宝appwww.tatmou.com/金宝appsupport/compilers/current_release/

  2. 升级或更改编译器。有关更多信息,请参见选择并配置编译器

  3. 重新构建模型。

模型模拟和程序执行的结果不同

描述

为模型生成的程序产生的结果与模型仿真结果不同。生成的源代码包括产生有符号整数溢出的算术操作。编译器可能没有为有符号整数溢出条件实现包装行为。或者,如果您正在使用支持换行的编译器,则可能没有将其配置为使用金宝app-fwrapv选择。

有关更多信息,请参见“代码生成器依赖于C语言的未定义行为进行整数溢出”。

行动

  • 如果编译器可以强制包装行为,请打开它。例如,对于gcc编译器或基于gcc的编译器(如MinGW),指定编译器选项-fwrapv

  • 选择一个检查整数溢出的编译器。

  • 如果你有嵌入式编码器®,开发和应用代码替换库来替换为有符号整数生成的代码。

生成预期的代码并产生意想不到的结果

描述

构建过程生成预期的源代码,但可执行程序产生意想不到的结果。生成的源代码将按照预期显示。然而,可执行程序会产生意想不到的结果。

行动

做以下其中一件事:

  • 降低编译器优化级别。

    1. 设置编译器优化级别配置参数为自定义

    2. 自定义编译器优化标志字段,指定较低的优化级别。

    3. 重新构建模型。

  • 禁用编译器优化。

    1. 编译器优化级别优化关闭(更快的构建)

    2. 重新构建模型。

有关更多信息,请参见控制编译器优化以及编译器文档。

编译时的问题

问题 行动

编译器配置中存在错误。

确保MATLAB®金宝app支持要使用的编译器和版本。有关当前支持和兼容的编译器的列表,请参见金宝appwww.tatmou.com/金宝appsupport/compilers/current_release/.如有必要,升级或更改编译器(请参阅选择并配置编译器选择并配置编译器).

make实用程序、编译器或链接器的环境变量设置不正确。例如,在Windows平台上安装Cygwin工具会影响其他编译器使用的环境变量。

方法检查系统的环境变量设置命令在Windows平台或setenvLinux操作系统®平台。确保设置与您正在使用的工具的要求相匹配。

属性指定的自定义代码中出现错误功能Block或in自定义代码.例如,代码引用了编译器无法找到的头文件。

要隔离问题的来源,请从模型中删除自定义代码,调试并重新构建模型。

该模型包括一个块,例如一个设备驱动程序块,它不是用于当前选定的系统目标文件。

删除系统目标文件特定的块或配置模型以与另一个系统目标文件一起使用。

当模型构建从模型引用层次结构中生成可执行程序,且以下条件为真时,将出现关于未定义的数据引用的链接器错误:

  • 可以通过创建数据对象来表示信号、状态或参数数据,例如金宝app仿真软件。信号.您在模型引用层次结构中使用对象。

  • 对数据对象使用自定义存储类。自定义存储类需要嵌入式编码器。

  • 将对象的所有者设置为不直接访问数据的模型。

  • 你使用工具链lcc-win64

要解决这个问题,请选择以下方法之一:

  • 在数据对象中清除老板财产。或者,将所有者设置为直接访问数据的模型。

  • 使用不同的工具链,例如海湾合作委员会,而不是低成本航空

LCC编译器不支持源文件夹路径中的&号金宝app

描述

如果您使用LCC编译器,并且您的模型文件夹路径包含一个&号(),则构建过程产生错误。

行动

从模型文件夹路径中移除&号。然后,重新构建模型。

LCC编译器可能不支持行长度的快速加速器代码金宝app

描述

如果正在编译Rapid Accelerator代码,LCC编译器可能会产生与行数限制相关的错误。由于混淆,快速加速器代码可以有更长的行长。

行动

使用支持较长代码行的编译器编译快速加速器代码。金宝app

相关的话题

外部网站