PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anjuta und Include Problem



xmarvel
26-01-2004, 17:06
hi

ich will ein GTK+ 2.0 Programm entwickeln habe mir dazu Anjuta und glade compiliert.
Wenn ich bei anjuta ein neues Projekt erstelle und dann auf kompilieren drücke funktioniert es ohne Probleme aber wenn ich einmal in Glade gehe und nur Source Code Genereien klicke und dann speichere und wieder in Anjuta gehe. Und dann wieder compliliere dann kommt der Fehler das er gtk/gtk.h nicht finden konnte. Wenn ich den inlude Path manuell angabe dann findet er zwar gtk.h aber dann kommen tausend andere include Fehler.
Wie und welche Libarys muss ich denn einbinden und geht das nicht einfacher das Anjuta die vielleicht automatisch einbindet ?

MFG
xmarvel

f0rtex
26-01-2004, 17:45
versuch mal


g++ *.cc -o myprog `pkg-config gtkmm-2.0 --cflags --libs`

wenns so funktioniert, schau dir die Ausgabe von pkg-config gtkmm-2.0 --cflags --libs an.

greets
f0rtex

xmarvel
26-01-2004, 21:25
also wenn ich den Befehl an main.cc ausführe dann kommt das

In file included from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/include/g++-v3/backward/iostream.h:31,
from main.cc:4:
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/include/g++-v3/backward/backward_warning.h:32:2: warning: #warning
This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard.
Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>.
To disable this warning use -Wno-deprecated.
das funktioniert auch, leider wird da auch nichts graphisches aufgerufen, da in der main.cc nur eine Hello World cout Ausgabe drin ist.

Aber Glade erstellt automatisch eine main.c mit folgenden Inhalt:

/*
* Initial main.c file generated by Glade. Edit as required.
* Glade will not overwrite this file.
*/

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#include <gtk/gtk.h>

#include "interface.h"
#include "support.h"

int
main (int argc, char *argv[])
{
GtkWidget *window1;

#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif

gtk_set_locale ();
gtk_init (&argc, &argv);

add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");

/*
* The following code was added by Glade to create one of each component
* (except popup menus), just so that you see something after building
* the project. Delete any components that you don't want shown initially.
*/
window1 = create_window1 ();
gtk_widget_show (window1);

gtk_main ();
return 0;
}

und wenn ich dann den Befehl ausführe kommt diese Fehlermeldung.

main.c: In function `int main(int, char**)':
main.c:29: `PACKAGE_DATA_DIR' undeclared (first use this function)
main.c:29: (Each undeclared identifier is reported only once for each function
it appears in.)
main.c:29: syntax error before string constant

Also irgendwas blödes mache ich bestimmt falsch. Kann ja nicht so schwer sein. Hab ja noch keinen eigenen code da eingefügt will es ja erstmal nur compiliert bekommen.

f0rtex
27-01-2004, 19:14
Versuch mal


add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");

durch


add_pixmap_directory(PACKAGE_PIXMAPS_DIR);

zu ersetzen.

xmarvel
27-01-2004, 21:21
erstmal thx an alle :)
jetzt habe ich das Problem lokalisiert.
Ich habe bei Anjuta mit dem Wizard GTK + 2.0 Projekt ausgewählt mit der Porgrammiersprache C++ leider funktioniert es so nicht sondern nur mit C keine Ahnung warum.
Dafür habe ich mal beim Projekt Wizard gtkmm 2.0 probiert mit C++ und siehe da es funktioniert einwandfrei.

Kann mir vielleicht noch jemand sagen was der Unterschied zwischen gtkmm und gtk+ ist ? Werde natürlich mich nochmal schlau machen aber heute nicht mehr.

MFG
xmarvel

f0rtex
28-01-2004, 10:59
What is gtkmm (Previously known as Gtk--)?

gtkmm is a C++ wrapper for GTK+. That is, it is a language binding that lets you use GTK+ from C++. This includes support for C++ features such as inheritance, polymorphism and other powerful techniques which C++ programmers expects to have at their disposal.

xmarvel
28-01-2004, 18:34
war leider nur ein Teilerfolg :rolleyes:
Wenn ich ein Projekt mit der Programmiersprache C erstelle und bei Glade auch auf C stelle dann funktioniert alles einwandfrei.
Leider wollte ich es mit C++ programmieren also überall C++ ausgewählt und dann kommt das Problem das glade die Dateien nicht überschreibt bzw. nicht anpasst wenn man z.B. ein neuen Button hinzufügt.
Entweder macht ich es händisch dann kommen wieder viele fehler oder er nimmt halt den alten code.
Wenn man C und C++ als Programmiersprache bei Anjuta nimmt dann kommen die selben Fehler wie bei C++.
Hab schon eigentlich alles ausprobiert weiss aber nicht mehr so recht weiter.
Anscheinend kann Anjuta mit glade C++ nicht richtig umgehen oder hat das jemand schonmal effektiv geschafft ?

peschmae
28-01-2004, 18:59
Die Frage ist natürlich, was genau das Umschalten der Programmiersprache von C nach C++ in Anjuta bzw. Glade bewirkt d.h. ob beide nach der Umschaltung gtk-- verwenden oder nicht.

Die Sache mit dem nicht-überschreiben oder nicht anpassen finde ich merkwürdig. Allerdings weiss ich nicht wie Glade das händelt - das Problem ist ja, dass das Programm die Dateien wohl nicht überschreiben sollte, wenn du was daran geändert hast.

MfG Peschmä