私はgtk(またはこの場合はgtkmm)で練習しています。私はまったく新しく、私は比較的新しいC++です。ウィンドウを開いてウィジェットをいくつか入れてもらえる作業プログラムがありましたが、今はボタンにアクションを追加しようとしていますが、これはうまくいきません。mainの関数をC++のほかのファイルから呼び出す方法は?
main.cc:
#include <iostream>
#include "buttons.h"
#include <gtkmm/application.h>
void printLine()
{
std::cout<<"you pressed the button"<<std::endl;
}
int main(int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app =
Gtk::Application::create(argc, argv,
"org.gtkmm.examples.base");
Buttons buttons;
return app->run(buttons);
}
buttons.h:
#ifndef GTKMM_EXAMPLE_BUTTONS_H
#define GTKMM_EXAMPLE_BUTTONS_H
#include <gtkmm/window.h>
#include <gtkmm/button.h>
#include <gtkmm/box.h>
class Buttons : public Gtk::Window
{
public:
Buttons();
virtual ~Buttons();
protected:
//Signal handlers:
void on_button_clicked();
//Child widgets:
Gtk::Button m_button;
Gtk::Box buttonBox;
};
#endif //GTKMM_EXAMPLE_BUTTONS_H
buttons.cc:
#include <iostream>
#include "buttons.h"
Buttons::Buttons()
{
m_button.add_pixlabel("info.xpm", "click here");
set_title("Pixmap'd buttons!");
set_border_width(10);
m_button.signal_clicked().connect(sigc::mem_fun(*this,
&Buttons::on_button_clicked));
add(buttonBox);
buttonBox.pack_start(m_button);
//m_button.show();
show_all_children();
}
Buttons::~Buttons()
{
}
void Buttons::on_button_clicked()
{
printLine();
}
私はプログラムをコンパイルする++グラムを使用していますが、それは私にこれを提供しますエラーメッセージ: g ++ main.cc -o button pkg-config gtkmm-3.0 --cflags --libs
/tmp/c cKyphYe.o:機能でmain': main.cc:(.text+0x93): undefined reference to
ボタン::ボタン() ' main.cc:(.text+0xc5):Buttons::~Buttons()' main.cc:(.text+0x124): undefined reference to
ボタンへの未定義参照::〜ボタン()' collect2は:エラー:ldは
すべてのソースファイルをコンパイル行に入れる必要があります。したがって、main.ccの直後にbuttons.ccを追加するだけでよいはずです。それを行うには他にも方法がありますが、あなたを動かすためにはうまくいくはずです。 – xaxxon