【问题标题】:gtkmm3 example not compiling (undefined reference)gtkmm3 示例未编译(未定义参考)
【发布时间】:2015-06-25 16:09:06
【问题描述】:

我正在尝试编译以下示例

#include <gtkmm.h>

int main(int argc, char *argv[])
{
  Glib::RefPtr<Gtk::Application> app =
    Gtk::Application::create(argc, argv,
      "org.gtkmm.examples.base");

  Gtk::Window window;
  window.set_default_size(200, 200);

  return app->run(window);
}

我使用此命令:g++ ./gtk.cpp -o ./gtk -Wall pkg-config gtkmm-3.0 --cflags --libs 并收到此错误消息: /usr/local/lib/libatk-1.0.so: undefined reference to 'g_type_check_instance_is_fundamentally_a' collect2: error: ld returned 1 exit status 我该如何解决?

【问题讨论】:

  • 我认为你错过了 -l 选项,类似于-lgtkmm。我只是找不到 gtkmm3 二进制文件。

标签: c++ gtk3 gtkmm linux-mint cinnamon


【解决方案1】:

使用这个:

g++ ./gtk.cpp -o ./gtk -Wall `pkg-config gtkmm-3.0 --cflags --libs`

您需要在 pkg-config 命令前后添加`。

pkg-config 为您提供编译器标志,它们必须作为编译器参数传递(pkg-config 的输出,但不是相同的 pkg-config 命令)。

添加 ` 字符导致 pkg-config 命令输出作为参数添加到编译器。

您可以使用 echo 简单地将这种差异可视化:

$ echo pkg-config gtkmm-3.0 --cflags --libs
pkg-config gtkmm-3.0 --cflags --libs

$ echo `pkg-config gtkmm-3.0 --cflags --libs`
-pthread -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/gtk-3.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gtk-3.0/unix-print -I/usr/include/gdkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/atkmm-1.6 -I/usr/include/pangomm-1.4 -I/usr/lib/pangomm-1.4/include -I/usr/include/cairomm-1.0 -I/usr/lib/cairomm-1.0/include -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lglibmm-2.4 -lcairomm-1.0 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lsigc-2.0 -lgobject-2.0 -lglib-2.0

【讨论】:

  • 是的,我做到了,我只是不知道如何逃避它们并插入问题
  • 不,不是。我收到了这个错误,不知道为什么
  • 确保您在 1.0 版中安装了 libatk sudo apt-get install libatk1.0
  • 这是什么发行版(和版本)?
  • @murrayc 这是薄荷 17.1“丽贝卡”-肉桂(32 位)
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 2023-03-13
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多