Problem mit GTK



  • Hallo,

    ich spiele mich grad zum ersten Mal mit gtk und wollte ein kleines Beispielprogramm ausprobieren. Jedoch bekomme ich unter anderem die Fehlermeldung:

    helloworld.h:4:26: gtkmm/button.h: Datei oder Verzeichnis nicht gefunden
    

    Meine Headerdateien, also auch die button.h befinden sich in /opt/gnome/include/gtkmm-2.0/gtkmm, ist also logisch, dass sie nicht gefunden werden. Aber kann ich irgendwie den richtigen Pfad zuordnen? Ich kann ja schließlich nicht jedes Mal /opt/gnome/include/gtkmm-2.0/gtkmm als include-Pfad angeben? Wie macht man denn das in der Regel?

    Danke, Andi



  • der g++ hat doch nen option wo man den include pfad mit hinzufügen kann. glaub -I ist das

    g++ -I /home/...



  • mhmm..nein, da gibt es keinen Parameter. Aber selbst wenn, das kann doch nicht der gängige Weg sein, dass man bei jedem Aufruf, diesen Ratenschwanz mit angibt? Ich könnte natürlich die ganzen Headerdateien aus gtkmm auch nochmal in das Verzeichnis kopieren, in dem meine Programme sind. Aber wie macht man das denn so in der Regel? Ich dürfte ja ncht der einzige sein, der gtk benutzt 🙂



  • doch da muss es auf jeden fall so einen parameter geben.

    mach mal g++ --help

    und das brauchst du nicht dauernd zu schreiben, dafür gibts doch makefiles!!



  • g++ `pkg-config gtkmm-2.0 --cflags --libs` main.cpp mywindow.cpp -o myapp



  • Danke für euere Antworten. Leider bekomme ich jetzt nach Aufruf durch

    g++ `pkg-config gtkmm-2.0 --cflags --libs` main.cc  -o gtktest
    

    die Fehlermeldung
    /tmp/ccrKRcDt.o(.text+0x3b): In function main': : undefined reference toHelloWorld::HelloWorld[in-charge]()'
    /tmp/ccrKRcDt.o(.text+0x59): In function main': : undefined reference toHelloWorld::~HelloWorld [in-charge]()'
    /tmp/ccrKRcDt.o(.text+0x86): In function main': : undefined reference toHelloWorld::~HelloWorld [in-charge]()'
    collect2: ld returned 1 exit status

    Hier mein Quellcode:
    http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/ch03s06.html

    Andi



  • helloworld.cc haste ja gar nicht mitkompiliert?



  • ???????? schrieb:

    helloworld.cc haste ja gar nicht mitkompiliert?

    yo genau danach sieht die Fehlermeldung auch aus.



  • Hmm...klappt leider immernoch nicht. Mit dem Aufruf

    g++ `pkg-config gtkmm-2.0 --cflags --libs` main.cc helloworld.cc helloworld.h -o gtktest
    

    bekomme ich die Meldung:

    helloworld.cc: In constructor `HelloWorld::HelloWorld()':
    helloworld.cc:30: error: `sigc' undeclared (first use this function)
    helloworld.cc:30: error: (Each undeclared identifier is reported only once for
       each function it appears in.)
    helloworld.cc:30: error: syntax error before `::' token
    g++: compilation of header file requested
    

    "compilation of header file requested" - komisch, den hab ich ja mit dabei...

    ...und muss ich über diesen Aufruf denn nicht noch irgendwie angeben wo sich die Include-Dateien für gtkmm befinden??



  • Die includes kommen hier her -> `pkg-config gtkmm-2.0 --cflags --libs`

    Das
    "compilation of header file requested" bedeutet das er das nicht haben will. Das du angefordert hast das er mit compiliert werden soll was man aber nicht macht. Daher muss das hier fett markierte weg

    g++ `pkg-config gtkmm-2.0 --cflags --libs` main.cc helloworld.cc [b]helloworld.h[/b] -o gtktest
    

    Wenn du GTKmm 2.0 hast kann das so auch nicht gehen der Code den du da hast ist für 2.4.x und höher ( Das mit dem 2.0 hab ich wegen deinem "/opt/gnome/include/gtkmm-2.0/gtkmm" )

    Du solltest dir mal eine neuere version besorgen oder wenn du die schon hast mit

    g++ `pkg-config gtkmm-2.4 --cflags --libs` main.cc helloworld.cc  -o gtktest
    

    compilieren

    BR



  • ui, hast recht - bin ja garnicht auf dem neuesten Stand. Werd mir erstmal die neuen Sachen installieren. Danke soweit für euere Hilfe!!


Anmelden zum Antworten