没有为以下模块提供实现:Str
No implementations provided for the following modules: Str
我有一个使用 Str
模块的 OCaml 项目,但是在编译时,我得到这个错误:
$ make
ocaml setup.ml -build
Finished, 0 targets (0 cached) in 00:00:00.
+ /home/phase/.opam/system/bin/ocamlfind ocamlopt -g -linkpkg src/objects.cmx src/golf.cmx -o src/golf.native
File "_none_", line 1:
Error: No implementations provided for the following modules:
Str referenced from src/golf.cmx
Command exited with code 2.
Compilation unsuccessful after building 7 targets (6 cached) in 00:00:00.
E: Failure("Command ''/usr/bin/ocamlbuild' src/golf.native -tag debug' terminated with error code 10")
Makefile:7: recipe for target 'build' failed
make: *** [build] Error 1
这是一个包含以下 _oasis
文件的 Oasis 项目:
Name: GolfCaml
Version: 0.0.0
Synopsis: GolfScript Interpreter in OCaml
Authors: Jadon Fowler <jadonflower@gmail.com>
License: https://www.mozilla.org/en-US/MPL/2.0/
Description: GolfCaml is an interpreter for GolfScript in OCaml.
Homepage: http://jadonfowler.xyz/
OASISFormat: 0.4
BuildTools: ocamlbuild
Plugins: META (0.4), DevFiles (0.4)
Executable "golfcaml"
Path: src
MainIs: golf.ml
CompiledObject: best
这里是有问题的代码:
(* Token Regex from http://www.golfscript.com/golfscript/syntax.html *)
let token_regex = Str.regexp "[a-zA-Z_][a-zA-Z0-9_]*|'(?:\.|[^'])*'?|\"(?:\.|[^\"])*\"?|-?[0-9]+|#[^\n\r]*|."
(* Iterate of a line and interpret each char *)
let interpret_line line =
let tokens = Str.split token_regex line in
List.iter (fun (x) -> printf "%s\n" x) tokens
你几乎成功了 ;-)
Str
不在标准库中所以你需要告诉 oasis
接受它。在您的 _oasis
文件中,只需在 Executable
部分添加一件事:
_绿洲
Executable "golfcaml"
Path: src
MainIs: golf.ml
CompiledObject: best
BuildDepends:
str
它会很好地工作:
make
ocaml setup.ml -build
Finished, 0 targets (0 cached) in 00:00:00.
Finished, 4 targets (0 cached) in 00:00:00.
我有类似的错误,但我使用 Ocamlbuild 而不是 Oasis。我将以下内容添加到我的 _tags
文件中:
true: use_str
Ocamlbuild documentation 将 use_str
列为已弃用,替换为 ocamlfind
。但我没有安装后者,使标准包的 use_str
语法更方便。
我有一个使用 Str
模块的 OCaml 项目,但是在编译时,我得到这个错误:
$ make
ocaml setup.ml -build
Finished, 0 targets (0 cached) in 00:00:00.
+ /home/phase/.opam/system/bin/ocamlfind ocamlopt -g -linkpkg src/objects.cmx src/golf.cmx -o src/golf.native
File "_none_", line 1:
Error: No implementations provided for the following modules:
Str referenced from src/golf.cmx
Command exited with code 2.
Compilation unsuccessful after building 7 targets (6 cached) in 00:00:00.
E: Failure("Command ''/usr/bin/ocamlbuild' src/golf.native -tag debug' terminated with error code 10")
Makefile:7: recipe for target 'build' failed
make: *** [build] Error 1
这是一个包含以下 _oasis
文件的 Oasis 项目:
Name: GolfCaml
Version: 0.0.0
Synopsis: GolfScript Interpreter in OCaml
Authors: Jadon Fowler <jadonflower@gmail.com>
License: https://www.mozilla.org/en-US/MPL/2.0/
Description: GolfCaml is an interpreter for GolfScript in OCaml.
Homepage: http://jadonfowler.xyz/
OASISFormat: 0.4
BuildTools: ocamlbuild
Plugins: META (0.4), DevFiles (0.4)
Executable "golfcaml"
Path: src
MainIs: golf.ml
CompiledObject: best
这里是有问题的代码:
(* Token Regex from http://www.golfscript.com/golfscript/syntax.html *)
let token_regex = Str.regexp "[a-zA-Z_][a-zA-Z0-9_]*|'(?:\.|[^'])*'?|\"(?:\.|[^\"])*\"?|-?[0-9]+|#[^\n\r]*|."
(* Iterate of a line and interpret each char *)
let interpret_line line =
let tokens = Str.split token_regex line in
List.iter (fun (x) -> printf "%s\n" x) tokens
你几乎成功了 ;-)
Str
不在标准库中所以你需要告诉 oasis
接受它。在您的 _oasis
文件中,只需在 Executable
部分添加一件事:
_绿洲
Executable "golfcaml"
Path: src
MainIs: golf.ml
CompiledObject: best
BuildDepends:
str
它会很好地工作:
make
ocaml setup.ml -build
Finished, 0 targets (0 cached) in 00:00:00.
Finished, 4 targets (0 cached) in 00:00:00.
我有类似的错误,但我使用 Ocamlbuild 而不是 Oasis。我将以下内容添加到我的 _tags
文件中:
true: use_str
Ocamlbuild documentation 将 use_str
列为已弃用,替换为 ocamlfind
。但我没有安装后者,使标准包的 use_str
语法更方便。