| Newsgroups |
gmane.comp.lang.ocaml.beginners |
| Message-ID |
<[email protected]> |
On Mon, Jul 13, 2015 at 10:35:28AM -0400, Hendrik Boom [email protected] [ocaml_beginners] wrote:
> I finally found where ml_gdk_cairo_create is defined. Its definition
> was cunningly hidden from Google search by token-pasting.
>
> Within cairo.1.2.0/src/ml_cairo_lablgtk.c, in the source code I obtained
> from opam source, there is the line
>
> wML_1(gdk_cairo_create, GdkDrawable_val, Val_cairo_t)
>
> wML_1 is defined in cairo.1.2.0/src/ml_cairo_wrappers.h, and
> token-pastes "ml_" onto the start of "gdk_cairo_create"
> to produce ml_gdk_cairo_create
>
> What remains to be explained is why the compiled code doesn't seem to
> end up in opam's cairo library.
>
> Any ideas?
I compiled it using the four-line script in the README, and then inserted
the full pathname of the ml_cairo_lablgtk.o file to the command I used
to compile the program I'm struggling with.
ocamlfind ocamlopt -package cairo -package lablgtk2 -linkpkg toy_maker.mli toy_maker.ml my_interactor.ml demo_toy.ml ~/dv/opam/gtk/cairo.1.2.0-dev/src/ml_cairo_lablgtk.o -o runme
It compiled clean this time, so it appears to be definite that for
some reason ml_cairo_lablgtk is being left out of the library, een
though it is present in the source code.
So this leaves two questions -- one for the maintainer of the opam
package, and one for me.
(for the maintainer)
Why is this one object file appear to be missing from the library? Or
am I using it wrong?
(FOR ME)
Why does the program suffer from NULL pointer errors? I suspect
version skew; it's a program from an old tutorial I'm trying to run,
GTK has probably changed (maybe twice!), and there may be disagreement
between Debian packagess and the newly installed Opam packages.
-- hendrik
>
> -- hendrik
>
> On Sat, Jul 11, 2015 at 10:48:37PM -0400, Hendrik Boom [email protected] [ocaml_beginners] wrote:
> > On Sun, Jul 12, 2015 at 08:07:04AM +0900, Gabriel Scherer [email protected] [ocaml_beginners] wrote:
> > > When building an executable you should pass the flag -linkpkg to ocamlfind.
> >
> > Yes, that helps a lot. Thanks. I'm left with one undefined symbol:
> >
> > hendrik@notlookedfor:~/dv/fun/group/toy/cairo_toy$ ocamlfind ocamlopt -package cairo -package lablgtk2 -linkpkg toy_maker.mli toy_maker.ml my_interactor.ml demo_toy.ml -o runme
> > toy_maker.o: In function `camlToy_maker__redraw_1030':
> > (.text+0x102): undefined reference to `ml_gdk_cairo_create'
> > collect2: error: ld returned 1 exit status
> > File "caml_startup", line 1:
> > Error: Error during linking
> > hendrik@notlookedfor:~/dv/fun/group/toy/cairo_toy$
> >
> >
> > Now presumably this is the symbol referenced in cairo_lablgtk.ml:
> >
> > external create : [> `drawable] Gobject.obj -> Cairo.t = "ml_gdk_cairo_create"
> >
> > and I'd guess there should be C code around somewhere interfacing this module to
> > the actual gdk or cairo libraries. And a shared or unshared binary library
> > somewhere defining it. But a google search didn't find it, and
> > presumably there's some proper way to track it down.
> >
> > -- hendrik
> >
> > >
> > > On Sun, Jul 12, 2015 at 7:54 AM, Hendrik Boom [email protected]
> > > [ocaml_beginners] <[email protected]> wrote:
> > >
> > > > On Sat, Jul 04, 2015 at 10:29:22AM -0400, Hendrik Boom
> > > > [email protected] [ocaml_beginners] wrote:
> > > > > On Sat, Jul 04, 2015 at 06:19:02AM +0000, Gage Peterson
> > > > [email protected] [ocaml_beginners] wrote:
> > > > > > Use opam. It will work out much better. Also I don't think you should
> > > > ever
> > > > > > have to run it from root.
> > > > >
> > > > > Running it from root was a mistake. And the way it affected the
> > > > > results was a clue that the Debian-installed packages weren't even
> > > > > being seen. THough first I misinterpreted the clue.
> > > > >
> > > > > I'll try opam. That should work.
> > > > >
> > > > > Will report back.
> > > >
> > > > OK. Did
> > > > opam install lablgtk
> > > > and
> > > > opam install cairo
> > > >
> > > > Now I get
> > > >
> > > > hendrik@notlookedfor:~/dv/fun/group/toy/cairo_toy$ ocamlfind ocamlopt
> > > > -package cairo -package lablgtk2 toy_maker.mli toy_maker.ml
> > > > my_interactor.ml demo_toy.ml -o runme
> > > > File "demo_toy.ml", line 1:
> > > > Error: No implementations provided for the following modules:
> > > > GMain referenced from toy_maker.cmx, my_interactor.cmx
> > > > GPack referenced from toy_maker.cmx
> > > > GWindow referenced from toy_maker.cmx
> > > > GBin referenced from toy_maker.cmx
> > > > Cairo referenced from my_interactor.cmx
> > > > GMisc referenced from toy_maker.cmx
> > > > hendrik@notlookedfor:~/dv/fun/group/toy/cairo_toy$
> > > >
> > > >
> > > > Can I conclude that I'm now getting as far as the linker?
> > > >
> > > > How do I go abbout getting it to actually *find* these modules?
> > > >
> > > > -- hendrik
> > > >
> > > >
> > > > ------------------------------------
> > > > Posted by: Hendrik Boom <[email protected]>
> > > > ------------------------------------
> > > >
> > > > Archives up to December 31, 2011 are also downloadable at
> > > > http://www.connettivo.net/cntprojects/ocaml_beginners
> > > > The archives of the very official ocaml list (the seniors' one) can be
> > > > found at http://caml.inria.fr
> > > > Attachments are banned and you're asked to be polite, avoid flames etc.
> > > > ------------------------------------
> > > >
> > > > Yahoo Groups Links
> > > >
> > > >
> > > >
> > > >
> >
> >
> > ------------------------------------
> > Posted by: Hendrik Boom <[email protected]>
> > ------------------------------------
> >
> > Archives up to December 31, 2011 are also downloadable at http://www.connettivo.net/cntprojects/ocaml_beginners
> > The archives of the very official ocaml list (the seniors' one) can be found at http://caml.inria.fr
> > Attachments are banned and you're asked to be polite, avoid flames etc.
> > ------------------------------------
> >
> > Yahoo Groups Links
> >
> >
> >
>
>
> ------------------------------------
> Posted by: Hendrik Boom <[email protected]>
> ------------------------------------
>
> Archives up to December 31, 2011 are also downloadable at http://www.connettivo.net/cntprojects/ocaml_beginners
> The archives of the very official ocaml list (the seniors' one) can be found at http://caml.inria.fr
> Attachments are banned and you're asked to be polite, avoid flames etc.
> ------------------------------------
>
> Yahoo Groups Links
>
>
>