GTK+ i Code::blocks - problem z linkowaniem?

0

Witam serdecznie,
nie jestem pewien czy temat powinien trafić tu, wydaje mi się że problem nie jest związany z samym kodem, a z GTK+ i C:
pobrałem GTK+ zgodnie z wytycznymi na stronie do punktu z devhelpem włącznie, zrobiłem to w folderze E:\msys2\ ,
edytowałem zmienną środowiskową PATH dodając E:\msys2\mingw64
dodałem do innych opcji kompilatora pkg-config gtk+-3.0 –cflags -Wl, do opcji linkera pkg-config gtk+-3.0 –libs
utworzyłem nowy pusty, jak i później GTK+ projekt, podając (dotyczy proj. GTK+) dla pola include E:\msys2\mingw64\include, a dla pola lib E:\msys2\mingw64\lib
skopiowałem z tej strony kod:

#include <gtk/gtk.h>

static void
activate (GtkApplication* app,
          gpointer        user_data)
{
  GtkWidget *window;

  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
  gtk_widget_show_all (window);
}

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

i niestety dostałem w logu takie brzydactwa:
||=== Build: Debug in 1w (compiler: GNU GCC Compiler) ===|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|6|error: unknown type name 'GtkApplication'|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c||In function 'main':|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|21|error: unknown type name 'GtkApplication'|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|24|warning: implicit declaration of function 'gtk_application_new' [-Wimplicit-function-declaration]|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|24|warning: assignment makes pointer from integer without a cast [-Wint-conversion]|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|25|error: 'activate' undeclared (first use in this function)|
E:\msys2\mingw64\include\glib-2.0\gobject\gsignal.h|475|note: in definition of macro 'g_signal_connect'|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|25|note: in expansion of macro 'G_CALLBACK'|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|25|note: each undeclared identifier is reported only once for each function it appears in|
E:\msys2\mingw64\include\glib-2.0\gobject\gsignal.h|475|note: in definition of macro 'g_signal_connect'|
C:\Users\Jan\Documents\lern\GTK+\1w\main.c|25|note: in expansion of macro 'G_CALLBACK'|
||=== Build failed: 3 error(s), 2 warning(s) (0 minute(s), 4 second(s)) ===|
Nie jestem pewien gdzie popełniłem błąd, najprawdopodobniej przy instalacji, nigdy tak nie instalowałem niczego, byłbym wdzięczny gdyby ktoś mógł mi pomóc.

0
unknown type name 'GtkApplication'

Wygląda tak jakbyś kompilował to z gtk-2.0.
GtkApplication odnosi się do gtk-3.0.
Sprawdź czy kompiluje Ci się program zgodny z gtk-2.0 - powinien.

U mnie dla kompilacji:

gcc -Wall -pedantic `pkg-config gtk+-2.0 --cflags --libs` ./hard_app.c

./hard_app.c:4:11: error: unknown type name ‘GtkApplication’
 activate (GtkApplication* app,
           ^~~~~~~~~~~~~~
./hard_app.c: In function ‘main’:
./hard_app.c:19:3: error: unknown type name ‘GtkApplication’
   GtkApplication *app;
   ^~~~~~~~~~~~~~
...

Natomiast dla:

gcc -Wall -pedantic `pkg-config gtk+-3.0 --cflags --libs` ./hard_app.c

jest bez błędów.

0

Niestety, nie działa. dostaje to:
-IE:\msys2\mingw64\include\glib-2.0 -IE:\msys2\mingw64\lib\glib-2.0\include -IE:\msys2\mingw64\include\pango-1.0 -IE:\msys2\mingw64\lib\gtk-2.0\include -IE:\msys2\mingw64\include\atk-1.0 -IE:\msys2\mingw64\include\gdk-pixbuf-2.0 -c C:\Users\Jan\Documents\lern\GTK+\wf\main.c -o obj\Debug\main.o
mingw32-g++.exe -LE:\msys2\mingw64\lib -o bin\Debug\wf.exe obj\Debug\main.o -lgtk-win32-2.0 -lgobject-2.0 -lglib-2.0
mingw32-gcc.exe: error: gcc: No such file or directory
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s)
dla kodu

#include <gtk/gtk.h>
 
int main (int argc, char *argv[]) {
    GtkWidget *okno;
 
    gtk_init (&argc, &argv);
 
    okno = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (okno);
 
    gtk_main ();
 
    return 0;
}

zerżniętego z tej strony

0

To teraz UWAŻNIE przeczytaj to co wkleiłeś i będziesz wiedział w czym problem.

0

No właśnie nie bardzo rozumiem o który plik mu chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1