我有一个Visual Studio 2013项目,由C编码。我生成一个dll文件,并将其放入fmu文件structrue的目录中,还有一些其他源,例如modelDescription.xml。我将目录压缩到 fmu 中。然后我通过fmu块将其导入到simulink2021b中,它可以被识别为fmu,并且可以更新(Ctrl+D),但是当我运行它时,它显示错误:
"Error in supplied FMU: Unable to load dynamic library 'C:\Users\xxxx\Desktop\\fmu_test\simulink\slprj\_fmu\e06e7f3203c5e5995bff88ca17b48bde\fmu-minimum65\binaries\win64\BaeSAR_VSP.dll': ************".
************
是一串无法正确显示的代码。
当我在 simulink 2017b 上运行它时,错误
*************
变成了Try to access invalid addresses
。
我的 fmu 有什么问题吗?如何通过VS2013生成正确的fmu? (或者其他VS 版本)
项目代码非常简单。
我通过 FMUChecker-2.0.4-win64 工具检查我的 fmu,它输出一些信息和两个错误:
[ERROR][FMUCHK] Platform type returned from CS FMU 'win64' does not match the checker 'default'
[ERROR][FMUCHK] FMU logger callback does not propagate component environment to the application`
下一个输出是:
[INFO][FMUCHK] Initialized FMU for simulation starting at time 0
0.0000000000000000E+000
2.0000000000000000E+003
4.0000000000000000E+003
....
9.9800000000000000E+005
1.0000000000000000E+006
[INFO][FMUCHK] Simulation finished successfully at time 1e+06
FMU check summary:
FMU reported:
0 warning(s) and error(s)
Checker reported:
0 Warning(s)
2 Error(s)
我把这个fmu依赖的dll文件复制到resources目录下,并确保都是64位的,但是不行,simulink错误依然是
Try to access invalid addresses
。
请使用参考 FMU 和构建过程作为蓝图,了解如何从 C 代码生成定义良好的 FMU。