Gtkmm "... undefined reference to ... " hatası

Merhabalar.

C++ ve gtkmm ile bir kaç deneme yapmak istedim fakat daha boş bir pencere bile oluşturamadım.

Şu kodu:

#include <gtkmm.h>

int main(int argc, char *argv[])
{
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    Gtk::Main::run(window);

    return 0;
}

şu komutla derlediğimde:

g++ `pkg-config --cflags --libs gtkmm-3.0` -o main main.c++

şu hatayla karşılaştıyorum:

/usr/bin/ld: /tmp/ccexWnes.o: in function `main':
main.c++:(.text+0×47): undefined reference to `Gtk::Main::Main(int&, char**&, bool)'
/usr/bin/ld: main.c++:(.text+0x58): undefined reference to `Gtk::Window::Window(Gtk::WindowType)'
/usr/bin/ld: main.c++:(.text+0×64): undefined reference to `Gtk::Main::run(Gtk::Window&)'
/usr/bin/ld: main.c++:(.text+0×75): undefined reference to `Gtk::Window::~Window()'
/usr/bin/ld: main.c++:(.text+0×81): undefined reference to `Gtk::Main::Main()'
/usr/bin/ld: main.c++:(.text+0xa7): undefined reference to `Gtk: Window::~Window()'
/usr/bin/ld: main.c++:(.text+0xbc): undefined reference to `Gtk::Main::~Main()'
collect2: error: ld returned 1 exit status

Bu hatayı nasıl çözebilirim?

pkg-config --cflags --libs gtkmm-3.0 komutunun ciktisini gormemiz lazim.

Ama muhtemelen main.c++'i basa (sola) almak cozecektir.

Bu arada C++ kaynak dosyalarinin standart uzantisi cpp.

Ornek bir makefile bulmak ve/veya compiling/linking adimlarini ayirmak da simdi degilse bile ileride faydali olabilir.

1 Beğeni

Ben, g++'ın kullanımı g++ [options] file... şeklinde diye main.c++'ı en sona yazmıştım. Şimdi oldu, teşekkür ederim.

Bu komutu eklemeyi şurada gördüm(kullanmadığımda başlık dosyalarını bulamıyordu):

Resmi belgelerde de açıklası var:
https://developer.gnome.org/gtkmm-tutorial/3.0/sec-headers-and-linking.html.en

.c++ olarak kullanmak bir soruna yol açar mı?

Haklısınız, şimdilik ihtiyacım yok ama ileride Cmake kullamayı düşünüyorum.

Ciktisini gormek lazim. Yani komutun sonucunu alip g++'a veriyorsun ya, bu sonucun ne oldugunu, yani g++'in nasil cagrildigini gormek lazim.

g++ -I/usr/... yazmak yerine pkg-config kullanmanin butun mantigi senin sistemine spesifik g++ opsiyonlarini kullanmak. g++ komutu hata veriyorsa bu opsiyonlarin ne olduklarini belirtmende fayda var.

Oyle, fakat file’larin ve -l’lerin sirasi fark ediyor malesef.

Evet, bir suru cozulebilir ama gereksiz ufak soruna yol acar.

Guzel; build sistemi sart.

1 Beğeni