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?
aib
Temmuz 1, 2021, 2:23ös
2
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):
gtkmm-example.cpp
// g++ -std=c++14 -o gtkmm-example gtkmm-example.cpp `pkg-config --cflags --libs gtkmm-3.0`
#include <memory>
#include <gtkmm.h>
class MainWindow : public Gtk::ApplicationWindow {
public:
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder)
: Gtk::ApplicationWindow(obj)
, builder{builder}
This file has been truncated. show original
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.
aib
Temmuz 1, 2021, 4:02ös
4
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