GLib i język C jest w XXI wieku (Ustawienie GLib w projekcie)

Zawsze przychodzi moment w nauce języka programowania, że opanowało się całą składnie, oraz najważniejsze funkcje języka.

Wtedy przychodzi myśl, że trzeba coś zaprogramować, już nie chodzi aby napisać kolejny Hello World, czy program obliczający pierwiastki kwadratowe z równania. Chce się zaprogramować powiedzmy grę, program do obróbki zdjęć czy też program który wykonuję symulację lotu na księżyc. Zaprogramować coś poważnego.

W C nie ma STL (który się znajduje w C++) lub też nie ma .NET Framework który pozwala na utworzenie przeglądarki internetowej (bazującej na IE) w 20 min.

GLib został wyodrębniony z projektu GTK+ (zajmującej się tworzeniem GUI). Aby przekonać się co biblioteka może trzeba odwiedzić dokumentację biblioteki i przekonać się, że z tą biblioteką można sobie ułatwić życie.

Opis jak wprowadzić GLib do projektu dla Windows/Visual Studio 2010:

  • Z strony pobrać all-in-one bundles (wersja 2.22 – link może stać się nie aktualny ). W paczce znajduje się także GTK+ biblioteki do tworzenia aplikacji, może się przydać 🙂
  • Po rozpakowaniu (miejsce utworzonego folderu nazywam dalej jako <GTK+_HOME>), jeżeli nie posiadamy projektu to tworzymy nowy np. konsolowy z opcją 'Empty Project’
  • Wchodzimy w Project-> Nazwa_Projektu Properties… -> Configuration Properties -> VC++ Directories
    • W Include Directories dodajemy:
      • <GTK+_HOME>libglib-2.0include
      • <GTK+_HOME>includeglib-2.0
    • W Library Directories dodajemy:
      • <GTK+_HOME>lib
  • Wchodzimy w Configuration Properties -> Linker -> Input
    • W Additional Dependencies dodajemy glib-2.0.lib
  • Potrzeba jeszcze przekopiować pliki .dll z katalogu <GTK+_HOME>bin do miejsca gdzie jest tworzony program .exe. Potrzebne pliki to:
    • libglib-2.0-0.dll
    • intl.dll

Jakby ktoś chciał przetestować czy wszystko działa poprawnie może spróbować skompilować i uruchomić ten kod:

#include <stdio.h>
#include <glib.h>

int main()
{
GRand* rnd_gen = g_rand_new();
guint32 rnd_num;
rnd_num = g_rand_int(rnd_gen);

printf("%d",rnd_num);

g_rand_free(rnd_gen);
getchar();
return 0;
}

Program generuje liczbę pseudolosową (lepszą niż w przypadku standardowego rand()) i ją wyświetla.