我使用了林间空地设计师制作了一个GUI,并且我已经将这个功能封装在一个类中。这是我写过的课程定义:
#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没有这样的文件或目录。但是,我通过创建一个小驱动程序来测试gtkmm并且编译得很好。知道我可能做错了吗?
感谢。
编辑:here是我项目的github回购。构建clipswindow.o
时出现一个小错误,但错误仍然存在。
答案 0 :(得分: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)`
两次这就是将pthread附加到文件名的原因。