主要内容

解决实时应用程序的标准模板库(STL)编译错误

为了包含c++项目,我将源代码包装到S-Function块中,该块与金宝app®桌面实时™代码生成的目标,sldrt.tlc.c++项目使用c++ 11标准模板库(STL)接口,例如std::向量std::堆栈,std::复杂.我可以在正常模式下成功编译项目。但是,当我在外部模式编译时,我得到编译错误,如:

 file not found  file not found

这个问题意味着什么

编译器生成这些错误是因为c++标准模板库与实时代码不兼容。

在实时代码中,总有一个要求,就是在下一个时间步骤开始之前,总是按时完成一个时间步骤。这种需求为实时代码产生时间确定性行为,并产生或多或少固定的执行时间。

相比之下,c++标准模板库经常使用不确定时间的特性。最显著的例子是动态内存分配和异常。虽然实时内核以实时确定性的方式支持动态内存分配(有一些限制),但异常则不支持。金宝app因此,不可能使用会抛出异常的代码。

该问题导致大多数STL标头不可用金宝app桌面实时仿真软件目标代码生成。这些接口会抛出异常。不能在实时内核中运行使用STL的代码。

试试这个方法

要消除编译器错误,请修改项目,使其不使用c++标准模板库。

如果你不能修改你的项目不使用c++标准模板库,你可以使用金宝app桌面实时仿真软件正常模式下的代码生成目标。

对于普通模式,像在Simulink中那样编译s函数。金宝app然后,运行模型。实时需求不能被强制执行,但是实时缺失会在发生时被报告。