Visual Studio生成的一个fmu在simulink上运行,却遇到错误:“Unable to loaddynamic library”

问题描述 投票:0回答:1

我有一个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

c dll simulink fmi
1个回答
0
投票

请使用参考 FMU 和构建过程作为蓝图,了解如何从 C 代码生成定义良好的 FMU。

https://github.com/modelica/Reference-FMUs

© www.soinside.com 2019 - 2024. All rights reserved.