In Mac Lion, i get : $ ocamlopt.opt -shared plugin.cmx test.cmxa -o plugin.cmxs ld: warning: -read_only_relocs cannot be used with x86_64 $ ocamlopt.opt test.cmxa dynlink.cmxa loader.ml -o loader.native File "loader.ml", line 1, characters 0-1: Error: Cannot find file dynlink.cmxa 2012/3/8 Alan Schmitt > On 8 mars 2012, at 12:13, Alan Schmitt wrote: > > > On 27 févr. 2012, at 16:43, Damien Doligez wrote: > > > >>> Also, when running why3, I get some undefined symbols (_camlRandom, > _camlParsing, _camlString). Where are these symbols defined? > >> > >> Looks like modules of the standard library, right ? > > > > Regarding this, should something special be done when dynlinking a file > that depends on the standard library? I assume that dependencies are not > automatically loaded, but should one load the standard library first? > > > > In other words, is this a bug in why3, or in ocaml? > > Trying to get to the bottom of this, here is what I've done. > > - Adapting the minimal example from > http://caml.inria.fr/mantis/view.php?id=5093 I checked that I can load a > plugin that uses a function from Random. > - I then tried to load a why3 plugin. It fails because it cannot find some > symbol (_camlWhy3), and I could not find how to compile things to make sure > why3.cmxa is linked with the plugin. > - Getting back to the basics, I tried to create a small archive of my own, > which I would use in a plugin, and this is where I'm stuck. I have the > following files: > > test.ml: > > let f () = "foo" > > plugin.ml: > > let s = Test.f () > let () = print_endline s > > loader.ml: > > let load f = > try > Dynlink.loadfile f > with Dynlink.Error e -> print_endline (Dynlink.error_message e) > > let () = load "plugin.cmxs" > > to build everything, I do (I tried adding test.cmxa everywhere, to no > avail. Everything lives in the same, current directory): > > ocamlopt.opt -a -o test.cmxa test.ml > ocamlopt.opt -c -linkall -o plugin.cmx test.cmxa plugin.ml > ocamlopt.opt -shared plugin.cmx test.cmxa -o plugin.cmxs > ocamlopt.opt test.cmxa dynlink.cmxa loader.ml -o loader.native > > When I run "./loader.native", I get: > > no implementation available for Test > > I googled this error and could only find references to problem related to > the (deprecated) Dynlink.add_interfaces, which is not even supposed to work > natively. > > What am I doing wrong? > > Thanks, > > Alan > > > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa-roc.inria.fr/wws/info/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > > -- --------------------- https://twitter.com/#!/ontologiae/ http://linuxfr.org/users/montaigne