[Lablgtk] Cairo/GTK and cube example

Johan Mazel johan.mazel at gmail.com
Tue Sep 14 14:18:27 CEST 2010


2010/9/14 Olivier Andrieu <oandrieu at gmail.com>

> Hi !
>
> On Tue, Sep 14, 2010 at 11:50, Johan Mazel <johan.mazel at gmail.com> wrote:
> > Hi
> > I'm trying to use Cairo and GTK.
> > As a first step, I tried to compile and understand the cube example given
> at
> > this address: http://webcvs.cairographics.org/cairo-ocaml/test/.
>
> btw the current code is in the git repository, not CVS:
> http://cgit.freedesktop.org/cair gito-ocaml/<http://cgit.freedesktop.org/cairo-ocaml/>
>

I figured from the link http://webcvs.cairographics.org/cairo-ocaml/ that
the project might have been moved somewhere else but since your personnal
webpage was still linking to FreeDesktop and since I was lazy, I didn't
search in the page http://cgit.freedesktop.org/.


> > I use this line for the native compilation: ocamlopt -I +lablgtk2 -I
> +cairo
> > lablgtk.cmxa cairo.cmxa cairo_lablgtk.cmxa cube.ml -o cube.
> >
> > The first problem is that the bytecode compilation do not work:
> > ocamlc -I +lablgtk2 -I +cairo lablgtk.cma cairo.cma cairo_lablgtk.cma
> > cube.ml -o cube
> > File "cube.ml", line 1, characters 0-1:
> > Error: Error on dynamically loaded library:
> > /usr/lib/ocaml/stublibs/dllmlcairo.so:
> > /usr/lib/ocaml/stublibs/dllmlcairo.so: undefined symbol:
> caml_ba_byte_size
>
> This looks like some binary incompatibility between ocaml and your
> cairo-ocaml binary.
> caml_ba_byte_size is a symbol from the Bigarray library that got
> renamed at some point.
>
> Did you compile cairo-ocaml yourself ? If no, you have to ensure that
> you're using it with the same OCaml version that compiled it.
>
>
> > I however tried to run the native executable generated but I get the
> > following error:
> > (process:6496): GLib-GObject-WARNING **: invalid (NULL) pointer instance
> > (process:6496): GLib-GObject-CRITICAL **: g_signal_connect_data:
> assertion
> > `G_TYPE_CHECK_INSTANCE (instance)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_pango_context_get_for_screen:
> assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_font_description:
> > assertion `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_base_dir: assertion
> > `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_language: assertion
> > `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_new: assertion `context
> !=
> > NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_set_text: assertion
> `layout
> > != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_get_pixel_extents:
> assertion
> > `PANGO_IS_LAYOUT (layout)' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_set_text: assertion
> `layout
> > != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_get_pixel_extents:
> assertion
> > `PANGO_IS_LAYOUT (layout)' failed
> > (process:6496): GLib-GObject-CRITICAL **: g_object_unref: assertion
> > `G_IS_OBJECT (object)' failed
> > (process:6496): Gtk-WARNING **: Screen for GtkWindow not set; you must
> > always set
> > a screen for a GtkWindow before using the window
> > (process:6496): Gdk-CRITICAL **: gdk_pango_context_get_for_screen:
> assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_font_description:
> > assertion `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_base_dir: assertion
> > `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_language: assertion
> > `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_new: assertion `context
> !=
> > NULL' failed
> > (process:6496): GLib-GObject-CRITICAL **: g_object_unref: assertion
> > `G_IS_OBJECT (object)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_pango_context_get_for_screen:
> assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_font_description:
> > assertion `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_base_dir: assertion
> > `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_context_set_language: assertion
> > `context != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_new: assertion `context
> !=
> > NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_set_text: assertion
> `layout
> > != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_set_alignment: assertion
> > `layout != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_set_ellipsize: assertion
> > `PANGO_IS_LAYOUT (layout)' failed
> > (process:6496): Pango-CRITICAL **:
> pango_layout_set_single_paragraph_mode:
> > assertion `PANGO_IS_LAYOUT (layout)' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_set_width: assertion
> `layout
> > != NULL' failed
> > (process:6496): Pango-CRITICAL **: pango_layout_get_extents: assertion
> > `layout != NULL' failed
> > (process:6496): Gdk-CRITICAL **: gdk_screen_get_default_colormap:
> assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_colormap_get_visual: assertion
> > `GDK_IS_COLORMAP (colormap)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_screen_get_default_colormap:
> assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_screen_get_root_window: assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_screen_get_root_window: assertion
> > `GDK_IS_SCREEN (screen)' failed
> > (process:6496): Gdk-CRITICAL **: gdk_window_new: assertion `GDK_IS_WINDOW
> > (parent)' failed
> > Erreur de segmentation
>
> probably simply the gtk initialization missing. Add gtkInit.cmx before
> cube.ml while linking.
>
> --
>   Olivier
>

That was the problem, thanks for the fast answer.

Regards.
Johan Mazel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ocamlcore.org/pipermail/lablgtk-list/attachments/20100914/05bf5e0d/attachment.htm>
-------------- next part --------------
_______________________________________________
Lablgtk mailing list
Lablgtk at yquem.inria.fr
http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk


More information about the Lablgtk-list mailing list