Re: Cairo/GTK and cube example
Johan Mazel <[email protected]> Tue, 14 Sep 2010 14:18:27 +0200
| Newsgroups | gmane.comp.lang.ocaml.lib.gtk |
|---|---|
| Message-ID | <[email protected]> |
2010/9/14 Olivier Andrieu <[email protected]> > Hi ! > > On Tue, Sep 14, 2010 at 11:50, Johan Mazel <[email protected]> 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 _______________________________________________ Lablgtk mailing list [email protected] http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk