我想为我的 OCaml 应用程序制作一个 GTK 插件,使用 Dynlink 加载。如何让 ocamlbuild 在生成的插件中包含 lablgtk2 库?
作为测试,我有main.ml
:
let () =
try
Dynlink.loadfile "_build/gtk_plugin.cmxs"
with Dynlink.Error err ->
failwith (Dynlink.error_message err)
gtk_plugin.ml
:
let () =
print_endline "GTK plugin loaded!";
GMain.Main.main ()
_tags
:
<main.*>: package(dynlink)
<gtk_plugin.*>: package(lablgtk2)
但我得到:
$ ocamlbuild -use-ocamlfind main.native gtk_plugin.cmxs
$ ./main.native
Fatal error: exception Failure("error loading shared library:
.../_build/gtk_plugin.cmxs: undefined symbol: camlGtkMain")
注意:主二进制文件不能依赖于 libgtk(可能没有安装在目标系统上) - 如果插件无法加载,我想退回到控制台模式。