Browse thread
[Caml-list] mixing dynlink & toplevel...
-
Jonathan Roewen
-
Jonathan Roewen
-
Jonathan Roewen
- Vu Ngoc San
-
Jonathan Roewen
-
Jonathan Roewen
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Vu Ngoc San <san.vu-ngoc@l...> |
| Subject: | Re: [Caml-list] mixing dynlink & toplevel... |
By the way, is there somewhere a doc for toplevellib ? It is not in the "official" ocaml manual, and, googgleing a little bit, I could not find anything. Best San Jonathan Roewen a écrit : > Well, I've solved my own problem. Mind you, I am known for doing > things that are not expected/thought of... > > Turns out it was a double initialisation problem as dynlink & > toplevellib share some modules. > > On 8/28/06, Jonathan Roewen <jonathan.roewen@gmail.com> wrote: >> > Hi, >> > >> > I dunno if this is possible, but: if I use Dynlink, can I later load >> > toplevellib.cma, and use it like normal? At the moment I get undefined >> > reference to global 'Toploop'. >> > >> > Jonathan >> >> I've just made a small test case to demonstate: >> >> test.ml: >> open Dynlink >> >> let () = try >> print_endline "init"; >> Dynlink.init (); >> print_endline "allowing unsafe modules"; >> Dynlink.allow_unsafe_modules true; >> print_endline "loading toplevellib.cma"; >> Dynlink.loadfile "/usr/local/lib/ocaml/toplevellib.cma"; >> print_endline "loading topstart.cmo"; >> Dynlink.loadfile "/usr/local/lib/ocaml/topstart.cmo"; >> (* now the ocaml toplevel should be running *) >> with Dynlink.Error error -> print_endline (Dynlink.error_message error);; >> >> To compile: ocamlc -o test -linkall dynlink.cma test.ml >> >> Running: >> colinux:~/test# ./test >> init >> allowing unsafe modules >> loading toplevellib.cma >> loading topstart.cmo (shouldn't return) >> Objective Caml version 3.09.2 >> >> # let s = "hello world";; >> Reference to undefined global `Toploop' >> # exit 0;; >> colinu:~/test# >> >> As you can see, it can run functions fine (e.g. calling >> Pervasives.exit), but let bindings fail. >> >> I know that a module loaded via Dynlink.loadfile can call functions >> defined by other modules loaded by Dynlink.loadfile before it (I >> actually do this), so why can't the toplevel access these? It can only >> access those of the original program from my testing. >> >> Jonathan >> > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs >