[Gelöst][GTK+]Wie unter Windows kompilieren? Header falsch?



  • Hallo,

    X-Post: http://www.mrunix.de/forums/showthread.php?t=69438 seit 2010-10-04, unbeantwortet, deshalb meine Anfrage hier.

    ich hab bisher C nur unter Unix/Linux kompiliert.
    Hab jetzt nen Projekt mit gtk+ realisiert und wollte das unter Windows kompilieren, was mich vor einige Probleme stellte.

    Hab das Gtk+ AiO-Bundle unter GTK_HOME = C:\opt\gtk enpackt.
    Als Kompiler hab ich jetzt MinGW genommen.
    Hab aber auch Microsoft Visual Studio 2010 Ultimate installiert (nur so als Info).

    Projekt als zip: DivShare File - Schere_Stein_Papier.zip

    Wenn ich das Projekt unter MinGW kompilieren will, erhalte ich nicht die gewünschte Funktionalität:

    gcc SSP_main.c -o SSP.exe `pkg-config --cflags --libs gtk+-2.0 gmodule-2.0`
    

    Dies kompiliert zwar, aber beim Aufruf der EXE erhalte ich die Oberfläche und ne Konsole mit der Nachricht:

    (SSP.exe:2240): Gtk-WARNING **: Could not find signal handler 'on_button1_clicked'

    Wenn ich die Funktionalität der random.h haben will, dann bekomme ich beim kompilieren die Warnung der "Impliziten Definition der Funktion".

    Wenn ich die random-Funktionen auskommentiere und dann erst die Objektdateien erzeuge und diese dann mittels

    gcc `pkg-config --cflags --libs gtk+-2.0 gmodule-2.0` SSP_main.o SSP_callback.o -o SSP.exe
    

    compilieren/linken will, dann bekomme ich "undefined reference to '$gtk_FUNKTION'.

    Sind meine Header falsch?
    Oder liegt der Fehler beim Linken?

    Danke für eure Hilfe.



  • Kann mir keiner helfen, oder habe ich Etwas falsch gemacht beim Posten?
    Hätte ich die Quellen vlt in ner Codebox posten sollen, anstatt nen Archiv zu packen?

    Ich komm beim besten Willen nicht dahinter, warum das nicht kompilieren will. 😞

    pkg-config liefert unter MinGW:

    Chris@Terrarium_lap /d/Studium/GUI Sammlung/C/Schere_Stein_Papier
    $ pkg-config --cflags gtk+-2.0
    -mms-bitfields -Ic:/opt/gtk/include/gtk-2.0 -Ic:/opt/gtk/lib/gtk-2.0/include -Ic:/opt/gtk/include/atk-1.0 -Ic:/opt/gtk/include/cairo -Ic:/opt/gtk/include/pango-1.0 -Ic:/opt/gtk/include/glib-2.0 -Ic:/opt/gtk/lib/glib-2.0/include -Ic:/opt/gtk/include -Ic:/opt/gtk/include/freetype2 -Ic:/opt/gtk/include/libpng14

    Chris@Terrarium_lap /d/Studium/GUI Sammlung/C/Schere_Stein_Papier
    $ pkg-config --cflags gmodule-2.0
    -mms-bitfields -Ic:/opt/gtk/include/glib-2.0 -Ic:/opt/gtk/lib/glib-2.0/include

    Chris@Terrarium_lap /d/Studium/GUI Sammlung/C/Schere_Stein_Papier
    $ pkg-config --libs gtk+-2.0
    -Lc:/opt/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

    Chris@Terrarium_lap /d/Studium/GUI Sammlung/C/Schere_Stein_Papier
    $ pkg-config --libs gmodule-2.0
    -Lc:/opt/gtk/lib -lgmodule-2.0 -lglib-2.0 -lintl

    Die Daten bei den cflags sind richtig und vorhanden, ich versteh nicht, warum die Funktionen nicht gefunden werden. 😞
    Hab es sogar schon mit

    $ gcc `pkg-config --cflags gtk+-2.0 gmodule-2.0 | sed -e 's/Ic:/I\/c/g'`
    

    versucht, weil unter MinGW die Pfade nicht c:/opt sondern /c/opt sind.



  • Nach der Hilfe auf mrunix.de: [C] Wie unter Win Kompilieren? Header falsch? hab ich das Problem gelöst.

    Konnte es aber leider nicht vollständig reproduzieren. 😞

    Bei den Callbacks musste ich beim kompilieren die Libs übergeben damit diese korrekt übersetzt wurden. Zusätzlich habe ich das static entfernt und nen Header mit den Forward deklarationen erstellt und diese als extern deklariert, da es mit static später Probleme gab, als ich die random.h hinzugefügt habe.


Anmelden zum Antworten