Gtk - erreur : Unhandled exception

Signaler
Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006
-
Messages postés
13
Date d'inscription
dimanche 26 novembre 2000
Statut
Membre
Dernière intervention
18 novembre 2005
-
bien le bonjour, voilà j'ai un problème...

je compile mon projet et ça fonctionne ...
je lance l'exécutable et là ... ça plante....

le jolie texte qui me sort c'est :
Unhandled exception in appli.exe(LIBGDKGLEXT-WIN32-0.X-0.dll) :
0xC.0000005 : Access Violation.

c'est pas une question de pointeur : la ligne de commande où ça foire c'est :
glconfig = gdk_gl_config_new_by_mode( (GdkGLConfigMode) (GDK_GL_MODE_RGB | GDK_GL_MODE_DOUBLE | GDK_GL_MODE_DEPTH));
et la dll est ok (dans c:\system32)

je seche dessus depuis ... pfiou deux jours et je suis à court d'idées...

please help me...

3 réponses

Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006

j'ai fait des tests et c'est une partie des fonctions gtk qui foirent :
///////////
GdkGLConfig *glconfig;
gint major, minor;
mesh_info *info;
GtkWidget *window;
GtkWidget *vbox, *hbox, *label;
GtkWidget *drawing_area;
GtkWidget *button;
if (!gdk_gl_query_extension ())
{
MessageBox(NULL,"\n*** OpenGL is not supported.\n","info",MB_OK);
exit (1);
}
gdk_gl_query_version (&major, &minor);


glconfig = gdk_gl_config_new_by_mode( (GdkGLConfigMode) (GDK_GL_MODE_RGB | GDK_GL_MODE_DOUBLE | GDK_GL_MODE_DEPTH));
if (glconfig == NULL)
{
MessageBox(NULL,"\n*** Cannot find the double-buffered visual.\n","info",MB_OK);
MessageBox(NULL,"\n*** Trying single-buffered visual.\n","info",MB_OK);
glconfig = gdk_gl_config_new_by_mode ((GdkGLConfigMode) (GDK_GL_MODE_RGB | GDK_GL_MODE_DEPTH));
if (glconfig == NULL)
{
MessageBox(NULL,"\n*** No appropriate OpenGL-capable visual found.\n","info",MB_OK);
exit (1);
}
}
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
gtk_window_move(GTK_WINDOW(window), (int)(( GetSystemMetrics(SM_CXFULLSCREEN)-GetSystemMetrics(SM_CYFULLSCREEN))/2),0);
gtk_window_set_title (GTK_WINDOW (window), "Affiche de la generation");

gtk_signal_connect_object (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_show_all), GTK_OBJECT (fen2dC));
gtk_signal_connect_object (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window));
gtk_signal_connect_object (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);



vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show (vbox);


drawing_area = gtk_drawing_area_new ();

gtk_widget_set_size_request (drawing_area, GetSystemMetrics(SM_CYFULLSCREEN)-50, GetSystemMetrics(SM_CYFULLSCREEN)-50);

gtk_widget_set_gl_capability (drawing_area, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE);


gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);

gtk_widget_set_events(drawing_area,GDK_EXPOSURE_MASK|GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK|GDK_POINTER_MOTION_MASK|GDK_POINTER_MOTION_HINT_MASK);

g_signal_connect (G_OBJECT(drawing_area), "expose_event", G_CALLBACK(expose), NULL);
g_signal_connect (G_OBJECT(drawing_area), "configure_event", G_CALLBACK(configure), NULL);
g_signal_connect (G_OBJECT(drawing_area), "button_press_event", G_CALLBACK(button_press), NULL);
g_signal_connect (G_OBJECT(drawing_area), "motion_notify_event",G_CALLBACK(motion_notify), NULL);



info = (mesh_info*)g_malloc(sizeof(mesh_info));
info->do_init = TRUE;
info->beginx = 0;
info->beginy = 0;
info->zoom = 30;

g_object_set_data(G_OBJECT(drawing_area), "mesh_info", info);
gtk_widget_show (drawing_area);

button = gtk_button_new_with_label("Retour");
gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window));
gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
gtk_widget_show(button);

hbox = gtk_hbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);


char buff[50];
// int precision = 5;
// int decimal=0, sign=0;

label = gtk_label_new ("% :");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
gtk_label_set_justify( GTK_LABEL (label),GTK_JUSTIFY_CENTER );
gtk_widget_show (label);

label = gtk_label_new ("0.0");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
itoa((int)PVol,buff,10);
gtk_label_set_text( GTK_LABEL (label),buff );
gtk_label_set_justify( GTK_LABEL (label),GTK_JUSTIFY_CENTER );
gtk_widget_show (label);



label = gtk_label_new ("Nbre spheres :");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
gtk_label_set_justify( GTK_LABEL (label),GTK_JUSTIFY_CENTER );
gtk_widget_show (label);

label = gtk_label_new ("0");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
itoa(NbSpheres,buff,10);
gtk_label_set_text( GTK_LABEL (label),buff );
gtk_label_set_justify( GTK_LABEL (label),GTK_JUSTIFY_CENTER );
gtk_widget_show (label);

label = gtk_label_new ("Duree calc. :");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
gtk_label_set_justify( GTK_LABEL (label),GTK_JUSTIFY_CENTER );
gtk_widget_show (label);

label = gtk_label_new ("0");
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
itoa(elapsed_time,buff,10);
gtk_label_set_text( GTK_LABEL (label),buff );
gtk_label_set_justify( GTK_LABEL (label),GTK_JUSTIFY_CENTER );
gtk_widget_show (label);

gtk_widget_show (window);

je fais les include :
#include <gtk/gtk.h>
#include <gdk/gdkgl.h>
#include <gtk/gtkgl.h>

....////////

j'ai testé sur un autre projet et ça fonctionne... donc je suis désespéré...
Messages postés
23
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
27 mars 2006

en testant le même bout de code ssur une Win32 console application il me dit :

(ess.exe): GLib-GObject-WARNING **: specified class size for type `GdkGLWindow'
is smaller than the parent type's `GdkDrawable' class size


(ess.exe): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_t
ype > 0' failed


(ess.exe): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_T
YPE_IS_INSTANTIATABLE (instance_type)' failed


(ess.exe): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (
object_type)' failed


(ess.exe): GLib-GObject-WARNING **: specified class size for type `GdkGLWindow'
is smaller than the parent type's `GdkDrawable' class size


(ess.exe): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_t
ype > 0' failed


(ess.exe): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_T
YPE_IS_INSTANTIATABLE (instance_type)' failed

pas joli et incompréhensible...
si quelqu'un sait d'ou vient le probleme, je me prosternerais devant lui et l'appelerais "maitre"...
Messages postés
13
Date d'inscription
dimanche 26 novembre 2000
Statut
Membre
Dernière intervention
18 novembre 2005
1
Salut, il me semble avoir le même problème que toi, donc

si tu as trouve comment te sortir de cette histoire ,je suis preneur.



Je travail sur un projet WxWidgets sous linux. Tout fonctionnait bien

et d'un coup pouff...



Si tu peux m'aide, c cool



A++