Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    670

    [C++] Problema con le GTK

    Ciao A tutti
    Ho preso l'esempio (Hello world) dalla guida delle gtk (sito: www.gtk.org)

    codice:
    #include <gtk/gtk.h>
    
    /* This is a callback function. The data arguments are ignored
     * in this example. More on callbacks below. */
    static void hello( GtkWidget *widget,
                       gpointer   data )
    {
        g_print ("Hello World\n");
    }
    
    static gboolean delete_event( GtkWidget *widget,
                                  GdkEvent  *event,
                                  gpointer   data )
    {
        /* If you return FALSE in the "delete_event" signal handler,
         * GTK will emit the "destroy" signal. Returning TRUE means
         * you don't want the window to be destroyed.
         * This is useful for popping up 'are you sure you want to quit?'
         * type dialogs. */
    
        g_print ("delete event occurred\n");
    
        /* Change TRUE to FALSE and the main window will be destroyed with
         * a "delete_event". */
    
        return TRUE;
    }
    
    /* Another callback */
    static void destroy( GtkWidget *widget,
                         gpointer   data )
    {
        gtk_main_quit ();
    }
    
    int main( int   argc,
              char *argv[] )
    {
        /* GtkWidget is the storage type for widgets */
        GtkWidget *window;
        GtkWidget *button;
        
        /* This is called in all GTK applications. Arguments are parsed
         * from the command line and are returned to the application. */
        gtk_init (&argc, &argv);
        
        /* create a new window */
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        
        /* When the window is given the "delete_event" signal (this is given
         * by the window manager, usually by the "close" option, or on the
         * titlebar), we ask it to call the delete_event () function
         * as defined above. The data passed to the callback
         * function is NULL and is ignored in the callback function. */
        g_signal_connect (G_OBJECT (window), "delete_event",
    		      G_CALLBACK (delete_event), NULL);
        
        /* Here we connect the "destroy" event to a signal handler.  
         * This event occurs when we call gtk_widget_destroy() on the window,
         * or if we return FALSE in the "delete_event" callback. */
        g_signal_connect (G_OBJECT (window), "destroy",
    		      G_CALLBACK (destroy), NULL);
        
        /* Sets the border width of the window. */
        gtk_container_set_border_width (GTK_CONTAINER (window), 10);
        
        /* Creates a new button with the label "Hello World". */
        button = gtk_button_new_with_label ("Hello World");
        
        /* When the button receives the "clicked" signal, it will call the
         * function hello() passing it NULL as its argument.  The hello()
         * function is defined above. */
        g_signal_connect (G_OBJECT (button), "clicked",
    		      G_CALLBACK (hello), NULL);
        
        /* This will cause the window to be destroyed by calling
         * gtk_widget_destroy(window) when "clicked".  Again, the destroy
         * signal could come from here, or the window manager. */
        g_signal_connect_swapped (G_OBJECT (button), "clicked",
    			      G_CALLBACK (gtk_widget_destroy),
                                  G_OBJECT (window));
        
        /* This packs the button into the window (a gtk container). */
        gtk_container_add (GTK_CONTAINER (window), button);
        
        /* The final step is to display this newly created widget. */
        gtk_widget_show (button);
        
        /* and the window */
        gtk_widget_show (window);
        
        /* All GTK applications must have a gtk_main(). Control ends here
         * and waits for an event to occur (like a key press or
         * mouse event). */
        gtk_main ();
        
        return 0;
    }
    Ho provato a compilare, ma ricevo degli errori:

    codice:
    damiano@damiano:~/lavoro/c++$ g++ prova.cpp
    prova.cpp:1:21: gtk/gtk.h: No such file or directory
    prova.cpp:5: error: variable or field `hello' declared void
    prova.cpp:5: error: `GtkWidget' was not declared in this scope
    prova.cpp:5: error: `widget' was not declared in this scope
    prova.cpp:6: error: `gpointer' was not declared in this scope
    prova.cpp:7: error: initializer expression list treated as compound expression
    prova.cpp:7: error: expected `,' or `;' before '{' token
    prova.cpp:11: error: `gboolean' does not name a type
    prova.cpp:30: error: variable or field `destroy' declared void
    prova.cpp:30: error: `GtkWidget' was not declared in this scope
    prova.cpp:30: error: `widget' was not declared in this scope
    prova.cpp:31: error: `gpointer' was not declared in this scope
    prova.cpp:32: error: initializer expression list treated as compound expression
    prova.cpp:32: error: expected `,' or `;' before '{' token
    prova.cpp: In function `int main(int, char**)':
    prova.cpp:40: error: `GtkWidget' undeclared (first use this function)
    prova.cpp:40: error: (Each undeclared identifier is reported only once for eachfunction it appears in.)
    prova.cpp:40: error: `window' undeclared (first use this function)
    prova.cpp:41: error: `button' undeclared (first use this function)
    prova.cpp:45: error: `gtk_init' undeclared (first use this function)
    prova.cpp:48: error: `GTK_WINDOW_TOPLEVEL' undeclared (first use this function)
    prova.cpp:48: error: `gtk_window_new' undeclared (first use this function)
    prova.cpp:55: error: `G_OBJECT' undeclared (first use this function)
    prova.cpp:56: error: `delete_event' undeclared (first use this function)
    prova.cpp:56: error: `G_CALLBACK' undeclared (first use this function)
    prova.cpp:56: error: `NULL' undeclared (first use this function)
    prova.cpp:56: error: `g_signal_connect' undeclared (first use this function)
    prova.cpp:65: error: `GTK_CONTAINER' undeclared (first use this function)
    prova.cpp:65: error: `gtk_container_set_border_width' undeclared (first use this function)
    prova.cpp:68: error: `gtk_button_new_with_label' undeclared (first use this function)
    prova.cpp:80: error: `gtk_widget_destroy' undeclared (first use this function)
    prova.cpp:81: error: `g_signal_connect_swapped' undeclared (first use this function)
    prova.cpp:84: error: `gtk_container_add' undeclared (first use this function)
    prova.cpp:87: error: `gtk_widget_show' undeclared (first use this function)
    prova.cpp:95: error: `gtk_main' undeclared (first use this function)
    prova.cpp:98:2: warning: no newline at end of file
    damiano@damiano:~/lavoro/c++$
    Dall'errore sembra che il compilatore non ha trovato le librerie Gtk, ora non so quale pacchetto installare sul pc per fa girare questi programmi con la grafica...
    Ho molti programmi che utilizzano queste librerie grafiche come lopster e molti altri...ma quando vado a compilare non va...
    neanche a dire che il codice sia sbagliato, l'ho presto proprio dallo loro guida
    Aiutooooo

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    670
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    670
    forse può servire a qualcuno....
    Non bisogna compilare programmi con librerie Gtk in questo modo g++ programma.cpp
    ma cosi.

    codice:
    g++ programma.c -o programma `pkg-config --cflags --libs gtk+-2.0`
    Sia per il compilatore g++ che con gcc
    L'ho letto dalla loro guida :rollo:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.