IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

erreurs de compilation


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut erreurs de compilation
    Bonjour à tous,
    J'ai un programme en GTK+ que j'essaye de compiler sous visualC++ express 2005.
    Lorsque je compile, j'ai les erreurs suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    error C2275: 'GdkPixbuf' : illegal use of this type as an expression
                see declaration of 'GdkPixbuf'
    error C2065: 'pixel' : undeclared identifier
    error C2275: 'guchar' : illegal use of this type as an expression
                see declaration of 'guchar'
    error C2065: 'data' : undeclared identifier
    warning C4047: '=' : 'int' differs in levels of indirection from 'GdkPixbuf *'
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_pixels' : different types for formal and actual parameter 1
    warning C4047: '=' : 'int' differs in levels of indirection from 'guchar *'
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'const GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gdk_pixbuf_get_width' : different types for formal and actual parameter 1
    error C2109: subscript requires array or pointer type
    warning C4047: 'function' : 'GdkPixbuf *' differs in levels of indirection from 'int'
    warning C4024: 'gtk_image_new_from_pixbuf' : different types for formal and actual parameter 1
    warning C4022: 'g_object_unref' : pointer mismatch for actual parameter 1
    warning C4047: '=' : 'int' differs in levels of indirection from 'void *'
    Cependant, j'ai bien mis #include <gtk/gtk.h> en en-tête.

    J'ai également mis les lignes suivantes dans les options du compilateur:

    Répertoire du Dossier Bin (contenant les dll, etc...) :
    C:\Program Files\Pack GTK+\bin

    Répertoire du dossier Lib (contenant le fichiers .lib) :
    C:\Program Files\Pack GTK+\lib

    Répertoire des dossiers Include (contenant les fichiers .h et .c) :
    C:\Program Files\Pack GTK+\include
    C:\Program Files\Pack GTK+\include\atk
    C:\Program Files\Pack GTK+\include\cairo
    C:\Program Files\Pack GTK+\include\cairo\src
    C:\Program Files\Pack GTK+\include\glib
    C:\Program Files\Pack GTK+\include\glib\build
    C:\Program Files\Pack GTK+\include\glib\glib
    C:\Program Files\Pack GTK+\include\glib\gmodule
    C:\Program Files\Pack GTK+\include\glib\gobject
    C:\Program Files\Pack GTK+\include\glib\gthread
    C:\Program Files\Pack GTK+\include\gtk+
    C:\Program Files\Pack GTK+\include\gtk+\contrib
    C:\Program Files\Pack GTK+\include\gtk+\gtk
    C:\Program Files\Pack GTK+\include\gtk+\gdk
    C:\Program Files\Pack GTK+\include\gtk+\gdk-pixbuf
    C:\Program Files\Pack GTK+\include\gtk+\modules
    C:\Program Files\Pack GTK+\include\libpng
    C:\Program Files\Pack GTK+\include\libpng\contrib
    C:\Program Files\Pack GTK+\include\pango
    C:\Program Files\Pack GTK+\include\pango\modules
    C:\Program Files\Pack GTK+\include\pango\pango
    C:\Program Files\Pack GTK+\include\tiff
    C:\Program Files\Pack GTK+\include\tiff\libtiff
    C:\Program Files\Pack GTK+\lib\glib\include
    C:\Program Files\Pack GTK+\lib\gtk+\include

    De plus j'ai également ajouté les lignes suivantes dans project-> properties -> linker -> input -> additional dependencies:

    glib-2.0.lib
    pangocairo-1.0.lib
    pangowin32-1.0.lib
    atk-1.0.lib
    gdk_pixbuf-2.0.lib
    gdk-win32-2.0.lib
    pango-1.0.lib
    gmodule-2.0.lib
    gobject-2.0.lib
    gthread-2.0.lib
    gtk-win32-2.0.lib
    cairo.lib

    Enfin, j'ai fait la manipulation suivante :

    Pour Visual C++, il faut modifier les ressources du logiciel pour que les Dépendances supplémentaires soient automatiquement mises dans les Options des Projets .

    Allez donc dans le dossier VCProjectDefaults qui se trouve dans les ressources du logiciel, par défaut ici :
    C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults
    Ouvrez le fichier corewin_express.vsprops avec un éditeur de texte.
    Remplacez la ligne 8 par :
    AdditionalDependencies = "kernel32.lib glib-2.0.lib pangocairo-1.0.lib pangowin32-1.0.lib atk-1.0.lib gdk_pixbuf-2.0.lib gdk-win32-2.0.lib pango-1.0.lib gmodule-2.0.lib gobject-2.0.lib gthread-2.0.lib gtk-win32-2.0.lib cairo.lib"/>


    Je ne sais vraiment pas d'où vient l'erreur et je ne sais plus quoi faire pour faire fonctionner mon programme. En espérant trouver réponse parmi vous.
    Merci d'avance.

  2. #2
    Membre du Club Avatar de LeBelge63
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    Merci le forum GTK

    La majorité de tes erreurs vient du fait que tu n'utilise pas le bon type de variables.
    Essaye de modifier le type de variable et regarde ce qu'il ce passe.

    Mais nous ton code que l'on puisse voir.
    Pensez à utiliser

    est ton ami

    La France c'est l'Auvergne avec un petit peu de terre autour !!!

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut

    Voila mon code, j'espère que cela pourra téclairer sur l'origine des problèmes.
    Merci de ton aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    #include <gtk/gtk.h>
    #include <stdlib.h>
     
    #define largeur 80
    #define longueur 80 
     
     
    void creation_image(GtkWidget *MainWindow, GtkWidget *image)
    {
    	int i;
    	int j;
    	int compteur=0;
    	int couleur=0;
     
    	gchar *donnee=NULL; // Ce pointeur va pointé sur le début du fichier en mémoire
     
    	// Lecture du fichier et mise en mémoire complet
    	g_file_get_contents("C:\Resul.txt", &donnee, NULL, NULL);
     
     
      /* Création de l'image */
     
     GdkPixbuf *pixel=NULL;
     guchar *data=NULL;
     
     pixel=gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, longueur, largeur);
     data=gdk_pixbuf_get_pixels(pixel);
     
     /* Lecture fichier et dessin */
     
     
     
    	for ( i=0; i<longueur; i++)
    	{
    		for (j=0; j<largeur; j++)
    		{ 
    			couleur=(gint)g_ascii_strtod(donnee+compteur, NULL);
     
    			switch (couleur)
    			{
    				case 10: // Couleur verte par exemple
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)]=0;
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)+1]=255;
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)+2]=0;
    				break;
     
    				case 20: // Couleur rouge par exemple
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)]=255;
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)+1]=0;
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)+2]=0;
    				break;
     
    				case 30: // Couleur bleue par exemple
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)]=0;
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)+1]=0;
    					data[(i*3)+(gdk_pixbuf_get_width(pixel)*j*3)+2]=255;
    				break;
    			}
    			compteur++;
    		}
    	}
     
    	// Libération mémoire du fichier
    	g_free(donnee);
    	donnee=NULL; // Evite des problèmes de réutilisation.
     
    	// Création d'un GtkImage en fct du GdkPixbuf
    	image=gtk_image_new_from_pixbuf(pixel);
     
    	// Suppression du GdkPixbuf devenu inutile
    	g_object_unref(pixel);
    	pixel=NULL;
     
    	// Insertion de l'image dans la fenêtre principale
    	gtk_container_add(GTK_CONTAINER(MainWindow), image);
    }
     
     /* Création fenêtre */
     
    int main(int argc, char **argv)
    {
    	/* Variables */
    	GtkWidget * MainWindow = NULL;
    	GtkWidget *image=NULL;
     
    	/* Initialisation de GTK+ */
    	gtk_init(&argc, &argv);
     
    	/* Création de la fenêtre */
    	MainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	g_signal_connect(G_OBJECT(MainWindow), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
     
    	// Création de l'image et insertion dans la fenêtre principale
    	creation_image(MainWindow, image);
     
    	/* Affichage et boucle évènementielle */
    	gtk_widget_show_all(MainWindow);
    	gtk_main();
     
    	return 0;
    }
    Voila mon code, j'espère que cela pourra téclairer sur l'origine des problèmes.
    Merci de ton aide.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Il te manque probablement un include pour GdkPixbuf

    NB: les balises code ca rend les msgs plus lisibles

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 15h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 15h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 22h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 22h34
  5. Réponses: 2
    Dernier message: 05/03/2003, 00h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo