You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CMake编译FMU适配NuGet Femyou遇问题求助

针对Femyou加载OpenModelica导出FMU失败的问题解答

问题1:修改CMakeLists.txt设置运行时依赖为"none"是否足够?

仅修改运行时依赖为"none"不够,还需要确保以下CMake配置正确:

  • 输出文件名必须和FMU预期一致:比如你的场景中要确保生成的dll是TestarFemyou.dll,不能因CMake目标设置导致文件名变更
  • 强制指定64位架构:添加CMake参数-A x64,保证生成的dll是64位(和你的OpenModelica、Femyou环境匹配)
  • 确保C接口编译:FMU的导出函数是C标准接口,需在CMake中设置set(CMAKE_C_STANDARD 99),若使用C++源码,要加extern "C"包裹导出函数避免name mangling
  • 检查install路径:CMake的install步骤必须将生成的dll安装到FMU解压目录下的binaries/win64路径,否则Femyou无法定位文件

问题2:Visual Studio 2017中的操作是否存在错误?

你的操作存在几个潜在问题:

  • 构建目录选择错误:不要将构建二进制文件指向FMU解压目录,建议单独创建build子目录(比如在FMU解压目录下新建build文件夹),避免源码、中间文件、输出文件混放导致冲突
  • CMake版本兼容性问题:VS2017自带的CMake版本较旧,对CMP0177政策的处理可能存在缺陷,虽然Generate阶段能通过,但后续install步骤可能因路径规范化错误,导致dll无法复制到指定位置
  • 架构未明确指定:默认配置可能生成32位dll,需在CMake配置时明确选择x64架构(CMake GUI的"Optional platform for generator"中选x64)
  • 开发组件缺失:确保VS2017安装了完整的C开发组件,包括Windows SDK、VC工具集,否则无法编译生成原生dll

额外排查建议

  1. 优先检查OpenModelica导出FMU的设置:
    • 选择与Femyou兼容的FMI版本(比如FMI 2.0,需确认Femyou支持版本)
    • 导出时勾选"64-bit"选项,同时选择"独立"模式(避免依赖OpenModelica运行时库)
  2. 重编译时添加CMake参数:
    • -DCMAKE_BUILD_TYPE=Release:Debug版本dll可能带有额外调试依赖,Femyou加载易出错
    • -Wno-dev:抑制CMP0177的开发警告,避免干扰配置过程
  3. 手动验证:构建成功后,将生成的dll手动复制到FMU的binaries/win64目录,再测试Femyou加载

内容的提问来源于stack exchange,提问作者bea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:55:00