Gtk - erreur : Unhandled exception

watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006 - 15 mars 2005 à 14:19
boutonnet Messages postés 13 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 18 novembre 2005 - 26 sept. 2005 à 11:31
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

watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006
16 mars 2005 à 10:47
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é...
0
watashi_blao Messages postés 23 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 27 mars 2006
16 mars 2005 à 11:21
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"...
0
boutonnet Messages postés 13 Date d'inscription dimanche 26 novembre 2000 Statut Membre Dernière intervention 18 novembre 2005 1
26 sept. 2005 à 11:31
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++
0
Rejoignez-nous