2016-09-14 15 views
2

Я использую eclipse, mingw-w64, gtkmm2.4, glade, чтобы скомпилировать простую программу.gtkmm undefined ссылка на определенную функцию gtk :: builder add_from_file

Я могу скомпилировать примеры примеров gtkmm hello world, следуя учебнику, но когда дело доходит до поляны, появилось немного странное неопределенное для ошибки.

программа, которая компилируется и работать бесперебойно, который был gtkmm 2,24 простой пример учебник https://developer.gnome.org/gtkmm-tutorial/2.24/sec-basics-simple-example.html.en

#include <gtkmm.h> 
#include <iostream> 

using namespace std; 

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

Однако, когда я пытаюсь запустить еще один простой пример из поляны главы (24.2.1) вещи не работает ,

https://developer.gnome.org/gtkmm-tutorial/2.24/sec-builder-accessing-widgets.html.en пример:

#include <gtkmm.h> 
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    Gtk::Main kit(argc, argv); 
    //Gtk::Window window; //I changed it to fit with the glade example 

    Gtk::Window* window; //I changed this line from the example 

    //////////////// this part was pretty much just copied out from the example////// 
    Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create(); 
    try 
     { 
     refBuilder->add_from_file("something.glade"); //this is the line with problem. 
     } 
     catch(const Glib::FileError& ex) 
     { 
     std::cerr << "FileError: " << ex.what() << std::endl; 
     return 1; 
     } 
     catch(const Gtk::BuilderError& ex) 
     { 
     std::cerr << "BuilderError: " << ex.what() << std::endl; 
     return 1; 
     } 
    refBuilder->get_widget("window1", window); 
    //////////////// end of copied out from the example////// 

    Gtk::Main::run(*window); 
    return 0; 
} 

при компиляции, он дал ошибку, как следовать test.cpp:(.text.startup+0x281): undefined reference to Gtk::Builder::add_from_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'

Это, кажется, принимает аргумент "something.glade" как тип std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (я понятия не имею, что это).

согласно gtkmm инструкции (https: developer.gnome.org/gtkmm/stable/classGtk_1_1Builder.html#aa3f4af4e7eaf7861c8283dc0dbd5254c), кажется, он принимает только Gtk::Builder::add_from_file(const std::string & filename). Так действительно ли тип аргумента является проблемой?

Я попытался сделать его как std :: string, выполнив std::string() или string(), но он дал ту же ошибку.

Я пробовал комментировать эту строку, и она скомпилирована в порядке.

  • Gtk::Builder::create() не получил неопределенную ссылку на ошибку компиляции
  • refBuilder->get_widget("window1", window); не получил неопределенную ссылку на ошибку компиляции

Так теперь я почесал голову во всем этом, кажется, тривиальный вопрос. Пожалуйста, предоставьте некоторую помощь.

Для получения дополнительной информации

  • pkg-config --cflags --libs-IE:/gtkmm64/include/gtkmm-2.4 -IE:/gtkmm64/lib/gtkmm-2.4/include -IE:/gtkmm64/include/atkmm-1.6 -IE:/gtkmm64/include/giomm-2.4 -IE:/gtkmm64/lib/giomm-2.4/include -IE:/gtkmm64/include/pangomm-1.4 -IE:/gtkmm64/lib/pangomm-1.4/include -IE:/gtkmm64/include/gtk-2.0 -IE:/gtkmm64/include/gdkmm-2.4 -IE:/gtkmm64/lib/gdkmm-2.4/include -IE:/gtkmm64/include/atk-1.0 -IE:/gtkmm64/include/glibmm-2.4 -IE:/gtkmm64/lib/glibmm-2.4/include -IE:/gtkmm64/include/glib-2.0 -IE:/gtkmm64/lib/glib-2.0/include -IE:/gtkmm64/include/sigc++-2.0 -IE:/gtkmm64/lib/sigc++-2.0/include -IE:/gtkmm64/include/cairomm-1.0 -IE:/gtkmm64/lib/cairomm-1.0/include -IE:/gtkmm64/include/pango-1.0 -IE:/gtkmm64/include/cairo -IE:/gtkmm64/include -IE:/gtkmm64/include/freetype2 -IE:/gtkmm64/include/libpng14 -IE:/gtkmm64/lib/gtk-2.0/include -IE:/gtkmm64/include/gdk-pixbuf-2.0 -LE:/gtkmm64/lib -lgtkmm-2.4 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lgtk-win32-2.0 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng14 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl дал, Что я включил в проект
  • pkg-config --modversion gtkmm2.4 давал 2.22.0, так что я сомневаюсь, что это не имеет ничего общего с 2.14 требования add_from_file()
  • pkg-config --modversion gtk+2.0 дал 2.22.0
  • Я не использовал никаких флагов, таких как --std=c++xx.
  • окна 8 64bit

ответ