#c #function #callback #gtkmm #signal-handling
#c #функция #обратный вызов #gtkmm #обработка сигналов
Вопрос:
Я новичок и изучаю Gtkmm, следуя их официальной документации.
Но этот пример:https://developer.gnome.org/gtkmm-tutorial/stable/sec-menus-examples.html.en#menu-example-main
не работает, и я получаю такого рода ошибки:
examplewindow.cc: In constructor ‘ExampleWindow::ExampleWindow()’:
examplewindow.cc:18:67: error: no matching function for call to
‘Gio::SimpleActionGroup::add_action(const char [12],
sigc::bound_mem_functor0<void, ExampleWindow>)’
sigc::mem_fun(*this, amp;ExampleWindow::on_menu_file_new_generic));
^
Указанная выше ошибка относится к этому фрагменту кода:
refActionGroup->add_action("newstandard",
sigc::mem_fun(*this, amp;ExampleWindow::on_menu_file_new_generic));
Но функция «on_menu_file_new_generic» действительно существует. Итак, если функция обратного вызова действительно существует, то почему в ней написано «нет соответствующей функции»?
Есть помощь?
Комментарии:
1. Здесь компиляция выполняется нормально. Вы уверены, что используете версию gtkmm 3.0, а не 2.0? (ошибка связана с
add_action
, а не сon_menu_file_new_generic
).2. @n.m. Да, я компилирую с использованием 3.0
g main.cc examplewindow.cc -o run
pkg-config gtkmm-3.0 —cflags —libs`3. Также, пожалуйста, покажите весь набор сообщений об ошибках, а не только первые несколько строк.
4. версия gcc 4.8.1 Вот полное сообщение об ошибке: [ pastebin.com/TZEDbhDr ]
5. Можете ли вы попробовать скомпилировать этот простой файл: pastebin.com/6KgftTHF ? Вы получаете какие-либо ошибки?
Ответ №1:
Эта ошибка возникает из-за более старой версии библиотеки glibmm. Моя текущая версия glibmm — 2.37.4, которая не поддерживает этот метод.
Этот перегруженный метод add_action () впервые появился в glibmm 2.37.6, поэтому для устранения этой ошибки мне нужно установить более новую версию glibmm.
Надеюсь, что другие также смогут устранить свои ошибки.
Комментарии:
1. И если вы хотите придерживаться своей текущей версии glibmm, тогда я предлагаю вам последовать этому примеру git.gnome.org/browse/gtkmm-documentation/tree/examples/book /…