Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    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 : 0
    Points
    0

    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 :
    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 : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2008
    Messages : 73
    Points : 41
    Points
    41

    Par défaut

    Merci le Site du Zero

    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.

  3. #3
    Invité de passage
    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 : 0
    Points
    0

    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 :
    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 Expert
    Homme Profil pro Christophe
    Inscrit en
    janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Nom : Homme Christophe
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 1 259
    Points : 1 549
    Points
    1 549

    Par défaut

    Il te manque probablement un include pour GdkPixbuf

    NB: les balises code ca rend les msgs plus lisibles

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •