Προς το περιεχόμενο

Gtk στην C με DEV c++


gianakakis

Προτεινόμενες αναρτήσεις

Γεια σας παιδιά

 

Ασχολούμαι με την C τον τελευταίο καιρό λόγω της σχολής μου κάνοντας console applications μόνο.Τις προάλλες μας ζητήθηκε να φτίαξουμε ένα πρόγραμμα με παράθυρο που θα τυπώνει ένα πίνακα στοιχείων.

 

Ανέφεραν κάτι για το gtk.Εγώ έψαξα αρκετά αλλά δεν μπόρεσα να βρω κάποιο αξιόλογο tutorial για το πως θα βάλω το gtk σε windows 8 και να το χρησιμοποιήσω με το dev c++.

 

Αν γνωρίζετε κάποιο τέτοιο οδηγό παρακάλω πείτε μου,ακόμη αν ξέρετε καμία καλή σειρά tutorials \βιβλίο\βίντεο ή οτιδήποτε θα με βοηθήσει να μάθω το gtk.

 

Ευχαριστώ πολύ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Καλησπέρα,

 

το πρόβλημα υφίσταται μονάχα σε Windows 8 ή δεν έχεις ξαναστήσει ποτέ GTK+? Μέχρι και Windows 7 που έχω δοκιμάσει δουλεύει κανονικά πάντως. Δες κι εδώ... στο τελευταίο ποστ δίνω μερικά links που ίσως σου φανούν χρήσιμα.

 

Πολλά περισσότερα links όμως έχω συμπεριλάβει στο README.txt που περιλαμβάνω στο github project (το link του είναι στο 1ο ποστ εκείνου του νήματος).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα,

 

το πρόβλημα υφίσταται μονάχα σε Windows 8 ή δεν έχεις ξαναστήσει ποτέ GTK+? Μέχρι και Windows 7 που έχω δοκιμάσει δουλεύει κανονικά πάντως. Δες κι εδώ... στο τελευταίο ποστ δίνω μερικά links που ίσως σου φανούν χρήσιμα.

 

Πολλά περισσότερα links όμως έχω συμπεριλάβει στο README.txt που περιλαμβάνω στο github project (το link του είναι στο 1ο ποστ εκείνου του νήματος).

Δεν έχω ξαναστήσει GTK+ δεν νομίζω να υπάρχει πρόβλημα με τα windows 8 .Έχω κάνει μια μικρή πρόοδο:

 

κατέβασα το all in one bundle που λένε και το έβαλα στο c:\gtk δοκίμασα να κάνω στο dev c++ include αλλά δεν ξέρω τι ακριβώς πρέπει να γίνει include.Ακόμη είδα ένα tutorial που έλεγε να φτιάξω κάτι environment variables το έκανα και αυτό  αλλά τίποτα.

 

Αν μπορείς να μου απαντήσεις με σχετικά καλές οδηγίες θα ήταν πολύ καλά.

 

Ευχαριστώ πολύ

 

[EDIT]Τώρα τσεκάρω και το νήμα σου μήπως με βοηθήσει.

 

[EDIT2]Ακολούθησα τις οδηγίες σου στο README που βρήκα στο παιχνίδι Tic Tac Toe που έχεις φτίαξει όμως κάνοντας compile and run τον κώδικα σου μου βγάζει error στο 

 

#include <gtk/gtk.h>
 

Η ερώτηση μου είναι δεν πρέπει να κάνω κάτι μέσα στο Dev c++

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα,

 

δυστυχώς με πετυχαίνεις σε δύσκολη περίοδο από άποψη ελεύθερου χρόνου. Δεν χρησιμοποιώ dev-c++ αλλά μπορείς να δεις ποια header files (include) και ποια libraries πρέπει να ορίσεις στο dev-c++ διαβάζοντας στο ReadMe της τρίλιζας τις οδηγίες για στήσιμο στην Pelles-C (απλώς εσύ θα τα ορίσεις στο περιβάλλον του Dev-C++)

 

Μπορείς να τα δεις και σε αυτό το νήμα: http://www.insomnia.gr/topic/450299-notepad-plugins-mingw-ide/page-2?do=findComment&comment=4824638, καθώς επίσης και σε αυτό: http://s3cu14r.wordpress.com/2009/12/10/getting-gtk-working-with-glade-and-devc/ που βρήκα πρόχειρα στο Google, και είναι ειδικά για Dev-C++ (αλλά είναι παλαιότερο και δεν ξέρω κατά πόσο ισχύει ακόμα ατόφιο).

 

Σχετικά με το error στην τρίλιζα, ίσως μου έχει ξεφύγει κάνα ορθογραφικό λάθος στις διαδρομές των φακέλων (στην ενότητα για την Pelles-C έχω links προς screenshots, οπότε έχουν περισσότερες πιθανότητες να είναι σωστά).

 

ΥΓ. @papi: Από ότι θυμάμαι, το QT δεν έχει C bindings (άρα είναι άχρηστο για την περίπτωσή του φίλου).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα,

 

δυστυχώς με πετυχαίνεις σε δύσκολη περίοδο από άποψη ελεύθερου χρόνου. Δεν χρησιμοποιώ dev-c++ αλλά μπορείς να δεις ποια header files (include) και ποια libraries πρέπει να ορίσεις στο dev-c++ διαβάζοντας στο ReadMe της τρίλιζας τις οδηγίες για στήσιμο στην Pelles-C (απλώς εσύ θα τα ορίσεις στο περιβάλλον του Dev-C++)

 

Μπορείς να τα δεις και σε αυτό το νήμα: http://www.insomnia.gr/topic/450299-notepad-plugins-mingw-ide/page-2?do=findComment&comment=4824638, καθώς επίσης και σε αυτό: http://s3cu14r.wordpress.com/2009/12/10/getting-gtk-working-with-glade-and-devc/ που βρήκα πρόχειρα στο Google, και είναι ειδικά για Dev-C++ (αλλά είναι παλαιότερο και δεν ξέρω κατά πόσο ισχύει ακόμα ατόφιο).

 

Σχετικά με το error στην τρίλιζα, ίσως μου έχει ξεφύγει κάνα ορθογραφικό λάθος στις διαδρομές των φακέλων (στην ενότητα για την Pelles-C έχω links προς screenshots, οπότε έχουν περισσότερες πιθανότητες να είναι σωστά).

 

ΥΓ. @papi: Από ότι θυμάμαι, το QT δεν έχει C bindings (άρα είναι άχρηστο για την περίπτωσή του φίλου).

Συγγνώμη που άργησα να απαντήσω δεν έχω καταφέρει να το φτιάξω ακόμη δυστυχώς,θα συνεχίσω να προσπαθώ.Στο 2ο λινκ ακολούθησα τις οδηγίες αλλά μάλλον δεν λειτουργεί πλέον αυτός ο τρόπος.

 

Αν θες ρίξε μια ματιά στις εικόνες κάτω ίσως να μπορείς να βοηθήσεις..Είναι το error που παίρνω όταν πάω να κάνω compile ,στην δεύτερη εικόνα είναι τα project options..

post-139804-0-40871200-1363738352_thumb.png

post-139804-0-53643300-1363738359_thumb.png

 

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα,

 

μάλλον έχεις ξεχάσει να ορίσεις που να ψάχνει για τα header files και τα libraries, στην καρτέλα Directories

 

Σου έχω επισυνάψει screenshots με τα οποία δοκίμασα και λειτουργεί το παρακάτω hello-world...

#include <gtk/gtk.h>

/* -------------------------------------------------------- */
void hello( void )
{
	g_print ("Hello World\n");
}

/* -------------------------------------------------------- */
void destroy( void )
{
	gtk_main_quit ();
}

/* -------------------------------------------------------- */
int main( int argc, char *argv[] )
{
	GtkWidget *window = NULL;
	GtkWidget *button = NULL;

	gtk_init( &argc, &argv );

	window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
	gtk_signal_connect(
		GTK_OBJECT(window),
		"destroy",
		GTK_SIGNAL_FUNC(destroy),
		NULL
		);
	gtk_container_border_width( GTK_CONTAINER (window), 10 );

	button = gtk_button_new_with_label( "Hello World" );

	gtk_signal_connect(
		GTK_OBJECT(button),
		"clicked",
		GTK_SIGNAL_FUNC(hello),
		NULL
		);
	gtk_signal_connect_object(
		GTK_OBJECT (button),
		"clicked",
		GTK_SIGNAL_FUNC(gtk_widget_destroy),
		GTK_OBJECT(window)
		);
	gtk_container_add( GTK_CONTAINER(window), button );
	gtk_widget_show( button );

	gtk_widget_show( window );

	gtk_main();

	return 0;
}
Αν εξακολουθείς να έχεις πρόβλημα, δοκίμασε να ορίσεις την 32μπιτη έκδοση του mingw.

post-38307-0-20462100-1363786337_thumb.jpg

post-38307-0-04760300-1363786338_thumb.jpg

post-38307-0-81981200-1363786338_thumb.jpg

post-38307-0-52594600-1363786339_thumb.jpg

post-38307-0-41465500-1363786340_thumb.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σε περίπτωση που δεν έχεις βγάλει ακόμα άκρη, βρήκα λίγο χρόνο σήμερα και έφτιαξα ένα Project Template ειδικά για GTK+2 στο Orwell Dev-C++, το οποίο και σου επισυνάπτω στο τέλος του μηνύματος.

 

Βάλε και τα 3 αρχεία που περιέχει το zip μέσα στον φάκελο Templates, στον φάκελο που έχεις εγκαταστήσει το Orwell Dev-C++.

 

Κατόπιν, άνοιξε με έναν text editor το αρχείο Gtk2Hello.template κι αντικατέστησε όλες τις εμφανίσεις της διαδρομής του GTK+2 με αυτή που αντιστοιχεί στο δικό σου σύστημα. Δηλαδή όπου βλέπεις c:/unix/gtk+/... αντικατέστησε το με τον φάκελο που που έχεις εγκαταστήσει το GTK+2 στο δικό σου μηχάνημα (καλό είναι εκείνος ο φάκελος να μην περιέχει κενά διαστήματα).

 

Τέλος, μέσα από το Orwell Dev-C++ διάλεξε: New->Project->[GTK+]->GTK+2 Example δώσε ένα όνομα στο project και θα σου το φτιάξει με ένα αρχείο hello.c που θα έχει γραμμένο  κώδικα σε GTK+2.

 

Υπάρχουν όμως 2 προβλήματα. Στην τελευταία έκδοση του Orwell Dev-C++ (την 5.4.1) ενώ κάνει κανονικά compile και build, όταν πας να τρέξεις το .exe μέσα από το IDE βαράει error για μια library του GTK+2 (την libglib-2.0-0.dll). Αν το τρέξεις όμως το .exe έξω από το IDE τρέχει κανονικά.

 

Εγώ κατέβασα την 5.3.0.4 που δείχνω και στο screenshot και εκεί δουλεύει. Με μια μικρή λεπτομέρεια. Την 1η φορά που επιλέγεις Compile σου παραπονιέται πως δεν βρίσκει resource files (αυτά είναι για Win32 programming)... δεν ξέρω γιατί. Αν ξανακάνεις compile όμως στο καπάκι, τότε δουλεύει κανονικά από και και πέρα.

 

Μάλλον κάτι θα θέλει να βάλω μέσα στο template που να του λέει να μην τρέχει το windres.exe αλλά δεν ξέρω πως να το κάνω... δεν βρήκα και τεκμηρίωση, οπότε μια χαρά είναι κι έτσι (η άλλη εναλλακτική είναι να πας να το σβήσεις χειροκίνητα από το παραγόμενο Makefile.win, αλλά περισσότερος κόπος είναι... απλώς αγνόησε το 1ο compilation).

 

Screenshot:
post-38307-0-43992400-1363883829_thumb.jpg

 

Download:

Gtk2Hello.template.zip

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Καλησπέρα,

 

μάλλον έχεις ξεχάσει να ορίσεις που να ψάχνει για τα header files και τα libraries, στην καρτέλα Directories

 

Σου έχω επισυνάψει screenshots με τα οποία δοκίμασα και λειτουργεί το παρακάτω hello-world...

#include <gtk/gtk.h>

/* -------------------------------------------------------- */
void hello( void )
{
	g_print ("Hello World\n");
}

/* -------------------------------------------------------- */
void destroy( void )
{
	gtk_main_quit ();
}

/* -------------------------------------------------------- */
int main( int argc, char *argv[] )
{
	GtkWidget *window = NULL;
	GtkWidget *button = NULL;

	gtk_init( &argc, &argv );

	window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
	gtk_signal_connect(
		GTK_OBJECT(window),
		"destroy",
		GTK_SIGNAL_FUNC(destroy),
		NULL
		);
	gtk_container_border_width( GTK_CONTAINER (window), 10 );

	button = gtk_button_new_with_label( "Hello World" );

	gtk_signal_connect(
		GTK_OBJECT(button),
		"clicked",
		GTK_SIGNAL_FUNC(hello),
		NULL
		);
	gtk_signal_connect_object(
		GTK_OBJECT (button),
		"clicked",
		GTK_SIGNAL_FUNC(gtk_widget_destroy),
		GTK_OBJECT(window)
		);
	gtk_container_add( GTK_CONTAINER(window), button );
	gtk_widget_show( button );

	gtk_widget_show( window );

	gtk_main();

	return 0;
}
Αν εξακολουθείς να έχεις πρόβλημα, δοκίμασε να ορίσεις την 32μπιτη έκδοση του mingw.

Είναι εύκολο να βάλεις σε ένα συμπιεσμένο όλα τα αρχείου του project με τις ρυθμίσεις; Έκανα ακριβώς τα ίδια με τα screenshots και μου βγάζει ακόμη πολλά errors.όσο για την έκδοση του mingw που την αλλάζω; Επίσης έχω διαφορετική έκδοση dec c++ από εσένα..

 

[EDIT]Τώρα είδα το 2ο μήνυμα σου θα το δοκιμάσω και θα σου πώ πως πήγε..Ευχαριστώ..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Γράφαμε μαζί μάλλον. Δες το αμέσως προηγούμενο ποστ από το δικό σου.

Έκανα ότι ακριβώς μου είπες στο 2ο post σου και μου βγάζει λίγα error τώρα.

 

το gtk βρίσκετε στο c:/gtk στο σύστημα μου.

 

post-139804-0-48820900-1363887947_thumb.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ξέρω τι συμβαίνει. Είσαι σίγουρος πως δεν έχεις κάποιο τυπογραφικό λάθος στις διαδρομές των includes και των libraries? Κάτι τέτοιο φαίνεται να συμβαίνει από το error που παίρνεις (δεν μπορεί να βρει το σωστό path).

 

Αν είσαι σίγουρος πως τα έχεις σωστά, δοκίμασε να βάλεις και τον πηγαίο σου κώδικα σε διαδρομή που να ΜΗΝ περιέχει κανένα κενό διάστημα στο όνομά της (βλέπω π.χ. πως το hello.c το έχεις στο ../GUI project/...

 

Αν δεν σου κάνει κόπο ανέβασε σε ένα ζιπ και το Makefile.win που παράγει το Dev-C++ στον φάκελο που έχεις το hello.c να του ρίξω μια ματιά.

 

Α, και τον compiler τον καθορίζεις από το Project->Project Options->[Compiler] στην 1η-1η λίστα... (αφού πρώτα έχεις φορτώσει το project)... βεβαιώσου πως έχεις 32μπιτο compiler εκεί.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ξέρω τι συμβαίνει. Είσαι σίγουρος πως δεν έχεις κάποιο τυπογραφικό λάθος στις διαδρομές των includes και των libraries? Κάτι τέτοιο φαίνεται να συμβαίνει από το error που παίρνεις (δεν μπορεί να βρει το σωστό path).

 

Αν είσαι σίγουρος πως τα έχεις σωστά, δοκίμασε να βάλεις και τον πηγαίο σου κώδικα σε διαδρομή που να ΜΗΝ περιέχει κανένα κενό διάστημα στο όνομά της (βλέπω π.χ. πως το hello.c το έχεις στο ../GUI project/...

 

Αν δεν σου κάνει κόπο ανέβασε σε ένα ζιπ και το Makefile.win που παράγει το Dev-C++ στον φάκελο που έχεις το hello.c να του ρίξω μια ματιά.

 

Α, και τον compiler τον καθορίζεις από το Project->Project Options->[Compiler] στην 1η-1η λίστα... (αφού πρώτα έχεις φορτώσει το project)... βεβαιώσου πως έχεις 32μπιτο compiler εκεί.

Έχω 32μπιτο compiler επίσης τα έρρορ τα παίρνω με το template που μου έχεις δώσει ,δεν έχω κάνει κάτι include μέσα απο το dev c++ στις επιλογές έργου αφού είναι έτοιμο το template έτσι δεν είναι;

 

Λινκ για το makefile αλλά και το αρχείο του template που μου είπες να αλλάξω τα path (δεν βρήκα κάτι λάθος) Link.png Site: https://dl.dropbox.com/u/34940743/pack.rar">Εδώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχω 32μπιτο compiler επίσης τα έρρορ τα παίρνω με το template που μου έχεις δώσει ,δεν έχω κάνει κάτι include μέσα απο το dev c++ στις επιλογές έργου αφού είναι έτοιμο το template έτσι δεν είναι;

 

Λινκ για το makefile αλλά και το αρχείο του template που μου είπες να αλλάξω τα path (δεν βρήκα κάτι λάθος) Link.png Site: https://dl.dropbox.com/u/34940743/pack.rar">Εδώ

 

Ναι, το template λογικά πρέπει να αναλαμβάνει να σετάρει όλα τα inclusions. Μπορείς να τα διασταυρώσεις από το Project->Project Options.

 

Btw, σε μένα παράγεται διαφορετικό makefile.win, δες στο τέλος του... επίσης σε μένα δεν προσθέτει -static-libstdc++ -static-libgcc flags στον linker (δες όμως και το υστερόγραφο που έχω πιο κάτω)

 

Makefile.zip

 

Δοκίμασες σε φάκελο χωρίς κενά διαστήματα στο όνομά του; Δεν ξέρω τι άλλο να σκεφτώ. Μήπως τελικά υπάρχει κάποια ασυμβατότητα με τα Windows 8;

 

Έχεις δυνατότητα να δοκιμάσεις είτε σε Win7 είτε σε Win XP;

 

ΥΓ1. Παρεμπιπτόντως, ξέχασα να αναφέρω πως εγώ χρησιμοποίησα την portable έκδοση του Orwell Dev-C++, αυτή δηλαδή που είναι ένα σκέτο ζιπ χωρίς installer, και δεν περιέχει μέσα του κανέναν compiler. Το mingw32 toolchain το έχω σετάρει αυτόνομα μόνο του (όπως περιγράφω αναλυτικά σε εκείνο το νήμα για το Notepad++, για το οποίο έχω ήδη δώσει λινκ σε προηγούμενο ποστ) και απλώς έχω πει του Dev-C++ να κοιτάει εκεί για compiler.

 

Από περιέργεια, κι αν έχεις κουράγιο και χρόνο, δοκίμασε να στήσεις το mingw32 όπως περιγράφω σε εκείνο το νήμα και κάνε compile από γραμμή εντολών (όχι δλδ με Dev-C++) όπως επίσης περιγράφω σε εκείνο το νήμα.

 

Αν δουλέψει, θα ξέρουμε τουλάχιστον πως το πρόβλημα δεν είναι το GTK+ (και θα είναι είτε ο Dev-C++ με τα Win8, είτε το ενσωματωμένο mingw toolchain του Dev-C++).

 

ΥΓ2. Βασικά είναι υποχρεωτικό το Dev-C++? Το Code:Blocks (έκδοση 10 έχω, έχει βγει και 12) έχει έτοιμο GTK+ project, και απλά του δείχνεις τον κεντρικό φάκελο που έχεις εγκαταστήσει το GTK+ και καθαρίζεις... εκτός αν έχει και το Code::Blocks τίποτα θέματα με Win8 :P)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, το template λογικά πρέπει να αναλαμβάνει να σετάρει όλα τα inclusions. Μπορείς να τα διασταυρώσεις από το Project->Project Options.

 

Btw, σε μένα παράγεται διαφορετικό makefile.win, δες στο τέλος του... επίσης σε μένα δεν προσθέτει -static-libstdc++ -static-libgcc flags στον linker (δες όμως και το υστερόγραφο που έχω πιο κάτω)

 

attachicon.gifMakefile.zip

 

Δοκίμασες σε φάκελο χωρίς κενά διαστήματα στο όνομά του; Δεν ξέρω τι άλλο να σκεφτώ. Μήπως τελικά υπάρχει κάποια ασυμβατότητα με τα Windows 8;

 

Έχεις δυνατότητα να δοκιμάσεις είτε σε Win7 είτε σε Win XP;

 

ΥΓ1. Παρεμπιπτόντως, ξέχασα να αναφέρω πως εγώ χρησιμοποίησα την portable έκδοση του Orwell Dev-C++, αυτή δηλαδή που είναι ένα σκέτο ζιπ χωρίς installer, και δεν περιέχει μέσα του κανέναν compiler. Το mingw32 toolchain το έχω σετάρει αυτόνομα μόνο του (όπως περιγράφω αναλυτικά σε εκείνο το νήμα για το Notepad++, για το οποίο έχω ήδη δώσει λινκ σε προηγούμενο ποστ) και απλώς έχω πει του Dev-C++ να κοιτάει εκεί για compiler.

 

Από περιέργεια, κι αν έχεις κουράγιο και χρόνο, δοκίμασε να στήσεις το mingw32 όπως περιγράφω σε εκείνο το νήμα και κάνε compile από γραμμή εντολών (όχι δλδ με Dev-C++) όπως επίσης περιγράφω σε εκείνο το νήμα.

 

Αν δουλέψει, θα ξέρουμε τουλάχιστον πως το πρόβλημα δεν είναι το GTK+ (και θα είναι είτε ο Dev-C++ με τα Win8, είτε το ενσωματωμένο mingw toolchain του Dev-C++).

 

ΥΓ2. Βασικά είναι υποχρεωτικό το Dev-C++? Το Code:Blocks (έκδοση 10 έχω, έχει βγει και 12) έχει έτοιμο GTK+ project, και απλά του δείχνεις τον κεντρικό φάκελο που έχεις εγκαταστήσει το GTK+ και καθαρίζεις... εκτός αν έχει και το Code::Blocks τίποτα θέματα με Win8 :P)

Ξέχασα να το αναφέρω αλλά όλες οι τελευταίες μου προσπάθειες ήταν σε win 7 επίσης δοκίμασα σε νέο φάκελο χωρίς κενά ,Τώρα μάλλον θα χρησιμοποιήσω το codeblocks..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...