2016-11-25 4 views
0

Я создал графический интерфейс с использованием дизайнера полов и инкапсулировал функциональность в классе. Вот определение класса, который я написал:Ошибки при компиляции gtk-программы с gtkmm

#ifndef _CLIPSWINDOW_H 
#define _CLIPSWINDOW_H 
#include <gtkmm.h> 


class ClipsWindow : public Gtk::Window 
{ 
public: 
    ClipsWindow(BaseObjectType * cobject, const Glib::RefPtr<Gtk::Builder> &refGlade); 
    ~ClipsWindow(); 


protected: 
    Glib::RefPtr<Gtk::Builder> builder; 
    //MainWindow 
    Gtk::Window *main_window; 
    // Control buttons. 
    Gtk::Button *agenda_btn; // buttons to contain the control buttons in the GUI. 
    Gtk::Button *fact_btn; 
    Gtk::Button *run_btn; 
    Gtk::Button *reset_btn; 
    // Menu options. 
    //Gtk::MenuButton *options; // Get the options menu 
    Gtk::MenuItem *load_item; // Menu items for the "Options menu" 
    Gtk::MenuItem *save_item; 
    Gtk::MenuItem *change_strategy_item; 
    //Gtk::MenuButton *help; 
    Gtk::MenuItem *about_item; // Menu item for the "Help Menu" 

    // signal handlers for buttons. 
    void on_agendabtn_clicked(); 
    void on_factbtn_clicked(); 
    void on_runbtn_clicked(); 
    void on_resetbtn_clicked(); 

    // signal handlers for menu items. 
    void on_load_activate(); 
    void on_StrategyOption_activate(); 
    void on_SaveOption_activate(); 
    void AboutItem_activate_cb(); 
}; 







#endif 

Основная функция выглядит следующим образом:

Gtk::Main kit(argc,argv); 
    //auto app = Gtk::Application::create(argc, argv, "clipsgui.clemson.edu"); 
    Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("clipswindow.glade"); 



    ClipsWindow *cw = 0; 
    builder->get_widget_derived("main_window", cw); 
    kit.run(*cw); 

Я позаботилась, чтобы передать основной CObject к конструктору Gtk::Window. Когда я пытаюсь скомпилировать эту программу, используя команду g++ main_app.cpp -o main pkg-config --cflags --libs gtkmm-3.0``, я либо получаю файл .pthread, либо при попытке скомпилировать файлы по отдельности ошибка `gtkmm no такой файл или каталог , Тем не менее, я проверил gtkmm, создав небольшую программу драйверов, и она компилируется просто отлично. Любая идея, что я могу делать неправильно?

Спасибо.

EDIT: here - это мой рефит github проекта. Когда я построю , возникает небольшая ошибка, но ошибка по-прежнему сохраняется.

+0

Поскольку я не могу воспроизвести ваши ошибки. Неполный код, и неизвестно, как вы действительно компилируете свой код. Можно было бы только догадаться, и при угадывании проверьте свои варианты на g ++. –

+0

Я добавил github repo для своего кода. Пожалуйста, взгляните на него? И как вы компилируете программу? –

ответ

0
CC=g++ 
GTK_COMPILE_FLAGS=pkg-config gtkmm-3.0 --cflags --libs 


main: main_app.o clipswindow.o 
    $(CC) main_app.o clipswindow.o -o main`$(GTK_COMPILE_FLAGS)` 

main_app.o: main_app.cpp clipswindow.h 
    $(CC) main_app.cpp -o main.o `$(GTK_COMPILE_FLAGS)` 

clipswindow.o: clipswindow.cpp clipswindow.h 
    $(CC) clipswindow.cpp -o main.o`$(GTK_COMPILE_FLAGS)` 

Проблема с вашим файлом makefile, а не с образцом кода, который вы указали здесь. Вы установили как main_app.cpp, так и clipswindow.cpp для вывода main.o, поэтому один из них будет писать другую. Они не соответствуют тому, что вы хотите построить. Далее вам не хватает места, прежде чем

`$(GTK_COMPILE_FLAGS)` 

дважды, поэтому потоковой добавляется к имени файла.

+0

Спасибо. Вы говорите о пространстве между «тегами»? –

+0

Отредактировано, '' было принято за кавычки. Да перед тегами '' –

Смежные вопросы