'Trouble getting gtkmm-4.0 to work on macOS Monterey
I'm having trouble getting gtkmm-4.0 to work on Mac OS Monterey.
Here is a simple C++ application that uses gtkmm4.
// helloworld.cpp
#include <gtkmm.h>
class MyWindow : public Gtk::Window
{
public:
MyWindow();
};
MyWindow::MyWindow()
{
set_title("Basic application");
set_default_size(200, 200);
}
int main(int argc, char* argv[])
{
auto app = Gtk::Application::create("org.gtkmm.examples.base");
return app->make_window_and_run<MyWindow>(argc, argv);
}
Then I compile this application with g++, followed by demangled error messages through llvm-cxxfilt
.
g++-11 helloworld.cpp -o helloworld `pkg-config --cflags --libs gtkmm-4.0`
Undefined symbols for architecture arm64:
"Gtk::ShortcutManager::add_controller_vfunc(std::shared_ptr<Gtk::ShortcutController> const&)", referenced from:
vtable for MyWindow in ccevdqQk.o
construction vtable for Gtk::Window-in-MyWindow in ccevdqQk.o
construction vtable for Gtk::ShortcutManager-in-MyWindow in ccevdqQk.o
"Gtk::ShortcutManager::remove_controller_vfunc(std::shared_ptr<Gtk::ShortcutController> const&)", referenced from:
vtable for MyWindow in ccevdqQk.o
construction vtable for Gtk::Window-in-MyWindow in ccevdqQk.o
construction vtable for Gtk::ShortcutManager-in-MyWindow in ccevdqQk.o
"Gtk::Widget::snapshot_vfunc(std::shared_ptr<Gtk::Snapshot> const&)", referenced from:
vtable for MyWindow in ccevdqQk.o
construction vtable for Gtk::Window-in-MyWindow in ccevdqQk.o
construction vtable for Gtk::Widget-in-MyWindow in ccevdqQk.o
"Gtk::Widget::on_query_tooltip(int, int, bool, std::shared_ptr<Gtk::Tooltip> const&)", referenced from:
vtable for MyWindow in ccevdqQk.o
construction vtable for Gtk::Window-in-MyWindow in ccevdqQk.o
construction vtable for Gtk::Widget-in-MyWindow in ccevdqQk.o
Question: Does anyone know why I am getting the above errors, and how I can compile the C++ application?
Here is the output of pkg-config --cflags --libs gtkmm-4.0
% pkg-config --cflags --libs gtkmm-4.0
-I/opt/homebrew/Cellar/libffi/3.4.2/include -I/opt/homebrew/Cellar/gtkmm4/4.2.0/include/gtkmm-4.0 -I/opt/homebrew/Cellar/gtkmm4/4.2.0/lib/gtkmm-4.0/include -I/opt/homebrew/Cellar/pangomm/2.50.0/include/pangomm-2.48 -I/opt/homebrew/Cellar/pangomm/2.50.0/lib/pangomm-2.48/include -I/opt/homebrew/Cellar/glibmm/2.70.0/include/giomm-2.68 -I/opt/homebrew/Cellar/glibmm/2.70.0/lib/giomm-2.68/include -I/opt/homebrew/Cellar/glibmm/2.70.0/include/glibmm-2.68 -I/opt/homebrew/Cellar/glibmm/2.70.0/lib/glibmm-2.68/include -I/opt/homebrew/Cellar/cairomm/1.16.1/include/cairomm-1.16 -I/opt/homebrew/Cellar/cairomm/1.16.1/lib/cairomm-1.16/include -I/opt/homebrew/Cellar/libsigc++/3.0.7/include/sigc++-3.0 -I/opt/homebrew/Cellar/libsigc++/3.0.7/lib/sigc++-3.0/include -I/opt/homebrew/Cellar/gtk4/4.6.0/include/gtk-4.0/unix-print -I/opt/homebrew/Cellar/gtk4/4.6.0/include/gtk-4.0 -I/opt/homebrew/Cellar/glib/2.70.3/include/gio-unix-2.0 -I/opt/homebrew/Cellar/libepoxy/1.5.9/include -I/opt/homebrew/Cellar/cairo/1.16.0_5/include/cairo -I/opt/homebrew/Cellar/pango/1.50.3/include/pango-1.0 -I/opt/homebrew/Cellar/harfbuzz/3.3.1/include/harfbuzz -I/opt/homebrew/Cellar/pango/1.50.3/include/pango-1.0 -I/opt/homebrew/Cellar/fribidi/1.0.11/include/fribidi -I/opt/homebrew/Cellar/harfbuzz/3.3.1/include/harfbuzz -I/opt/homebrew/Cellar/graphite2/1.3.14/include -I/opt/homebrew/Cellar/gdk-pixbuf/2.42.6/include/gdk-pixbuf-2.0 -I/opt/homebrew/Cellar/libpng/1.6.37/include/libpng16 -I/opt/homebrew/Cellar/libtiff/4.3.0/include -I/opt/homebrew/Cellar/cairo/1.16.0_5/include/cairo -I/opt/homebrew/Cellar/pixman/0.40.0/include/pixman-1 -I/opt/homebrew/Cellar/fontconfig/2.13.1/include -I/opt/homebrew/opt/freetype/include/freetype2 -I/opt/homebrew/Cellar/libpng/1.6.37/include/libpng16 -I/opt/homebrew/Cellar/libxcb/1.14_1/include -I/opt/homebrew/Cellar/libxrender/0.9.10/include -I/opt/homebrew/Cellar/libxext/1.3.4/include -I/opt/homebrew/Cellar/libx11/1.7.3.1/include -I/opt/homebrew/Cellar/libxcb/1.14_1/include -I/opt/homebrew/Cellar/libxau/1.0.9/include -I/opt/homebrew/Cellar/libxdmcp/1.1.3/include -I/opt/homebrew/Cellar/graphene/1.10.6/include/graphene-1.0 -I/opt/homebrew/Cellar/graphene/1.10.6/lib/graphene-1.0/include -I/opt/homebrew/Cellar/glib/2.70.3/include -I/opt/homebrew/Cellar/glib/2.70.3/include/glib-2.0 -I/opt/homebrew/Cellar/glib/2.70.3/lib/glib-2.0/include -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/Cellar/pcre/8.45/include -I/opt/homebrew/Cellar/xorgproto/2021.5/include -L/opt/homebrew/Cellar/gtkmm4/4.2.0/lib -L/opt/homebrew/Cellar/pangomm/2.50.0/lib -L/opt/homebrew/Cellar/glibmm/2.70.0/lib -L/opt/homebrew/Cellar/cairomm/1.16.1/lib -L/opt/homebrew/Cellar/libsigc++/3.0.7/lib -L/opt/homebrew/Cellar/gtk4/4.6.0/lib -L/opt/homebrew/Cellar/pango/1.50.3/lib -L/opt/homebrew/Cellar/harfbuzz/3.3.1/lib -L/opt/homebrew/Cellar/gdk-pixbuf/2.42.6/lib -L/opt/homebrew/Cellar/cairo/1.16.0_5/lib -L/opt/homebrew/Cellar/graphene/1.10.6/lib -L/opt/homebrew/Cellar/glib/2.70.3/lib -L/opt/homebrew/opt/gettext/lib -lgtkmm-4.0 -lpangomm-2.48 -lgiomm-2.68 -lglibmm-2.68 -lcairomm-1.16 -lsigc-3.0 -lgtk-4 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
I'm using macOS Monterey with arm64 architecture.
% arch
arm64
Solution 1:[1]
on MacOS Monterey, Mac M1 and g++ (Homebrew GCC 11.3.0) 11.2.0 using llvm-cxxfilt on output of this line compilation
g++ helloworld.cpp -o helloworld pkg-config --cflags --libs gtkmm-4.0
I get:
Undefined symbols for architecture arm64:
Gtk::ShortcutManager::add_controller_vfunc(std::shared_ptrGtk::ShortcutController const&)
Gtk::ShortcutManager::remove_controller_vfunc(std::shared_ptrGtk::ShortcutController const&)
Gtk::Widget::snapshot_vfunc(std::shared_ptrGtk::Snapshot const&)
Gtk::Widget::on_query_tooltip(int, int, bool, std::shared_ptrGtk::Tooltip const&)
There are missing link libs ? How to compile gtkmm4 simple file on MacOs ? Thank You In Advance.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | amd25 |