Невозможно собрать программу, используя 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
,