从OpenModelica导出FMU至Python(FMPy)时加载共享库失败求助
解决Docker导出FMU在Windows FMPy中"加载共享库失败"的问题
核心问题:跨平台导出的FMU二进制不匹配
你在Docker(大概率是Linux容器)里导出的FMU是Linux平台的二进制文件(.so格式),但Windows需要的是Win64的.dll。FMPy解压后找不到对应Windows平台的DLL,就会触发这个错误。
分步解决方法
1. 切换到Windows容器或本地安装OpenModelica
- 如果你坚持用Docker,先在Docker Desktop里切换到Windows容器模式,然后使用基于Windows的OpenModelica镜像来导出FMU,这样生成的才是Win64的
.dll。 - 最省心的方案是直接在Windows本地安装OpenModelica 1.22.1,完全避免跨平台导出的兼容性问题。
2. 验证FMU内部的二进制文件
把导出的FMU改后缀为.zip解压后,检查binaries目录:
- 如果只有
linux64文件夹和.so文件,说明是Linux平台的FMU,肯定在Windows跑不起来。 - 必须要有
win64文件夹,里面包含FMU_pendulum.dll。
3. 导出FMU时明确指定目标平台
在OMEdit导出FMU的设置里:
- 确认选的是FMU 2.0 Co-Simulation
- 在
Export Options中把Target Platform设为win64 - 确保勾选
Generate binaries,让编译器生成对应平台的DLL文件。
4. 检查DLL的依赖项(如果DLL存在仍报错)
如果解压后有win64/FMU_pendulum.dll但还是报错,可能是缺少依赖库:
- 用Visual Studio的开发命令提示符运行:
dumpbin /dependents FMU_pendulum.dll - 或者用Dependency Walker工具查看缺失的依赖,通常是OpenModelica的运行时库,把这些库放到系统PATH里,或者和DLL放在同一目录即可。
内容的提问来源于stack exchange,提问作者Léo_Schmider
相关产品推荐
相关产品推荐

