Невозможно собрать программу, используя lablgtk2 с jbuilder

Я хотел бы использовать 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 ответа

Решение

Скорее всего, ваш jbuild отсутствует зависимость от core (из-за gtkThread.cmx), он должен работать с следующим файлом jbuild:

(jbuild_version 1)

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

Это связано с этой проблемой. Jbuilder/ Dune добавляет mt предикат автоматически, что означает, что если ваша библиотека предоставляет потоковую опцию, она будет использоваться, и вам нужно добавить threads как зависимость:

(jbuild_version 1)

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

Обратите внимание, что порядок библиотек является значительным в ocaml, threads должен прийти раньше lablgtk2,

Другие вопросы по тегам