OCaml v5.0中使用Str库遇‘Module `Str' is unavailable’错误求助
解决OCaml 5.0中Str库不可用的问题
一、命令行直接编译的正确方式
你之前只加-I +str没用,因为这个参数仅告诉编译器Str库的路径,但没把库文件链接到程序里。正确的编译命令分两种:
- 原生OCaml编译器编译字节码:
假设源码文件是regex.ml,运行:
编译原生代码(运行更快):ocamlc -I +str str.cma regex.ml -o regexocamlopt -I +str str.cmxa regex.ml -o regex - 用ocamlfind(更推荐,自动处理依赖路径):
ocamlfind ocamlc -package str -linkpkg regex.ml -o regex-package str指定依赖的库,-linkpkg负责自动链接库文件。
二、Dune项目的配置步骤(新手首选)
Dune是OCaml当前最常用的构建工具,配置简单:
- 假设你的项目结构是:
my_regex_project/ ├── dune └── regex.ml - 打开
dune文件,写入以下内容:(executable (name regex) ; 填你的源码文件名(不带.ml后缀) (libraries str)) ; 将str库添加到依赖列表 - 编译运行:
- 编译:
dune build - 执行程序:
dune exec ./regex.exe
- 编译:
如果是OCaml库项目,dune文件改成:
(library (name my_custom_lib) (libraries str))
三、在UTop交互式环境中使用Str库
直接输入以下指令即可:
#require "str";; open Str;;
内容的提问来源于stack exchange,提问作者Benjamin Borg
相关产品推荐
相关产品推荐

