2016-11-25 61 views
0

我已經使用glade設計器製作了一個GUI,並且我已經在一個類中封裝了這個功能。下面是類的定義,我已經寫了:使用gtkmm編譯gtk程序的錯誤

#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 no file or directory 。不過,我已經通過創建一個小驅動程序來測試gtkmm,並且它編譯得很好。任何想法我可能做錯了什麼?

謝謝。

編輯:here是我的項目github回購。當我構建clipswindow.o時有一個小錯誤,但錯誤仍然存​​在。

+0

由於我無法重現您的錯誤。不完整的代碼,你不知道如何真正編譯你的代碼。只有猜測可以做出,並猜測你的選擇到g ++。 –

+0

我已經爲我的代碼添加了github回購。請看看它?你怎麼編譯這個程序? –

回答

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和clipwindow.cpp來輸出main.o,因此其中一個會寫另一個。它們與您想要構建的內容不匹配。接下來你缺少一個空間

`$(GTK_COMPILE_FLAGS)` 

兩次這就是爲什麼pthread被附加到文件名。

+0

謝謝。你是在談論標籤之間的空間嗎? –

+0

編輯過,''被當作引號。是''標籤之前 –