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

OCaml使用Dune编译引用本地库出现Unbound module错误如何修复

问题修复方案

核心原因

Dune 对自定义库默认开启模块自动包装,你在 lib 目录定义的库名为 mcts,库内所有模块默认都会被封装到顶层 Mcts 模块下,直接调用 Readertsp 会识别不到模块。

修复步骤

  • 方案一:调整模块引用路径
    直接修改你的可执行入口代码(报错对应的MCTS_main.ml),加上库名前缀:
    let city_config = "ch130" in
    let path = Mcts.Readertsp.open_path city_config in ();;
    
  • 方案二:关闭库的模块包装
    如果你希望直接使用Readertsp作为模块名调用,修改lib/dune配置,添加wrapped false字段:
    (library
     (name mcts)
     (modules Readertsp)
     (libraries graphics)
     (wrapped false)
    )
    
  • 额外校验点
    1. 你的bin/dune中配置了(name MCTS_main),要求对应的入口源文件必须命名为MCTS_main.ml,如果当前入口文件是bin.ml,要么重命名源文件,要么把name字段改为(name bin)。
    2. 报错提示出错文件是tests/MCTS_main.ml,如果该文件存放在独立的tests目录下,需要给tests目录也添加dune配置,并且在依赖的libraries中引入mcts库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:15:03