簡體   English   中英

OCaml - 錯誤:模塊“Unix”不可用

[英]OCaml - Error: Module `Unix' is unavailable

我一直在使用在線提供的材料研究哈佛的 CS51 class。 我正在嘗試啟動最終項目並下載必要的文件,但是當我嘗試編譯它們時,出現以下錯誤:

Error: Module `Unix' is unavailable (required by `Thread')
Command exited with code 2.
Compilation unsuccessful after building 18 targets (15 cached) in 00:00:00.

我還沒有對我下載的代碼進行任何更改,據說我應該能夠在其當前的 state 中成功編譯它。 任何想法為什么我可能會收到此錯誤?

只需添加

open Unix;;

在 your.ml 文件的開頭

通常,您必須明確要求鏈接到Unix模塊。

以下程序:

$ cat main.ml
Unix.gethostname () |> print_endline

需要像這樣構建:

$ ocamlfind opt -linkpkg -package unix -o main main.ml; echo $?
0

而最低限度會因與您的錯誤類似的錯誤而失敗:

$ ocamlopt -o main main.ml; echo $?
File "main.ml", line 1:
Error: No implementations provided for the following modules:
         Unix referenced from main.cmx
2

也就是說,看起來您正在使用Core ,在這種情況下(實際上以及大多數其他情況)您可能最好使用dune

$ cat dune
(executable
   (name main)
   (libraries unix))

$ dune build main.exe

$ ./_build/default/main.exe
amam-oy

但是,如果您要求 Dune 將您鏈接到CoreUnix已經自動包含在內,因此以下dune文件也適用於上述程序:

$ cat dune
(executable
   (name main)
   (libraries core))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM