无法使用lablgtk2和jbuilder构建程序

时间:2017-11-07 19:26:16

标签: ocaml lablgtk ocaml-dune

我想在使用jbuilder进行编译时使用lablgtk2,但我在收到这些错误消息时遇到问题:

File "_none_", line 1:
Error: No implementations provided for the following modules:
         Thread referenced from /Users/hadilsabbagh/.opam/4.05.0/lib/lablgtk2/gtkThread.cmx
         Mutex referenced from /Users/hadilsabbagh/.opam/4.05.0/lib/lablgtk2/gtkThread.cmx
         Condition referenced from /Users/hadilsabbagh/.opam/4.05.0/lib/lablgtk2/gtkThread.cmx

这是我的jbuild

(jbuild_version 1)

(executable
  ((name simple)
  (libraries (lablgtk2))
  ))

2 个答案:

答案 0 :(得分:1)

这是由于this issue。 jbuilder / dune自动添加mt谓词,这意味着如果你的库提供了一个线程选项,它将被使用,你需要添加threads作为依赖:

(jbuild_version 1)

(executable
  ((name simple)
  (libraries (threads lablgtk2))
  ))

请注意,库的顺序在ocaml中很重要,threads需要在lablgtk2之前。

答案 1 :(得分:-2)

很有可能,您的jbuild缺少对core的依赖(由于gtkThread.cmx),它应该与以下jbuild文件一起使用:

(jbuild_version 1)

(executable
  ((name simple)
  (libraries (core lablgtk2))
  ))