私はプログラムが作成されたときに問題が私のメークファイルのどこかにあると確信しています。私はしばらくそれを周りにつけたが、何か動作するように見えることはできません。以下は私のコード/ makefileです。私はこれをmingw32で作っています。メイクファイルgtkmm; collect2.exe:エラー:ldは1の終了ステータスを返しました
のmakefile:
CXXFLAGS := -std=c++11 -Wall -Werror -g $(shell pkg-config gtkmm-3.0 --cflags)
LDLIBS = -lpthread $(shell pkg-config gtkmm-3.0 --libs)
all: test
test: sample.count
sample.count: InIT_Printer_Install_Assistant
./InIT_Printer_Install_Assistant
InIT_Printer_Install_Assistant: main.o win_home.o
g++ $(CXXFLAGS) $(LDLIBS) -o [email protected] $^ `pkg-config gtkmm-3.0 --cflags --libs`
main.o: main.cpp win_home.h
win_home.o: win_home.cpp win_home.h
clean:
-rm -f *.o *~
spotless: clean
-rm -f InIT_Printer_Install_Assistant
main.cppに:
#include <gtkmm.h>
#include <iostream>
#include "win_home.h"
int main(int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "com.InIT.PrinterApp");
HomeGUI win_home;
win_home.set_default_size(600,400);
win_home.set_title("InIT Self-Service Printer Management");
return app->run(win_home);
}
win_home.cpp:
#include "win_home.h"
HomeGUI::HomeGUI()
{
//build interface/gui
this->buildInterface();
//retrieve printers
//create printer Buttons
//register Handlers
//this->registerHandlers();
}
void HomeGUI::buildInterface()
{
//combo boxes
/*
Gtk::HBox combo_rowbox = Gtk::HBox(false, 10);
Gtk::ComboBox combobox_department = Gtk::ComboBox(false);
Gtk::ComboBox combobox_building = Gtk::ComboBox(false);
combo_rowbox.pack_start(child, false, false, padding=0)
add(combo_rowbox);
*/
return;
}
win_home.h:
#ifndef GTKMM_INIT_PRINTER_INSTALL_ASSISTANT_H
#define GTKMM_INIT_PRINTER_INSTALL_ASSISTANT_H
#include <vector>
#include <string>
#include <iostream>
#include <gtkmm.h>
class HomeGUI : public Gtk::Window
{
public:
HomeGUI();
virtual ~HomeGUI();
void buildInterface();
void registerHandlers();
//void defaultToFloorPlan();
protected:
//Signal Handlers
//Member variables
std::string m_selected_department;
std::string m_selected_building;
std::string m_selected_floor;
//Member widgets
//std::vector<Gtk::Button> m_printbuttons;
//HelpGUI m_win_help;
//UninstallGUI m_win_uninstall;
//Member logic
//ClientLogic logic;
};
#endif
結果行った後:
C:\ msys32ホームの\ PrintApplication/win_home.cpp \:3:HomeGUI」 C用VTT for HomeGUI' C:\msys32\home\PrintApplication/win_home.cpp:3: undefined reference to
VTTへの未定義の参照:\ msys32ホームの\ PrintApplication/win_home.cpp \:3:未定義を参照してください。HomeGUI ' のvtable C:¥msys32¥home¥PrintApplication/win_home.cpp:3:未定義参照vtable for HomeGUI' C:\msys32\home\PrintApplication/win_home.cpp:3: undefined reference to
vtable for HomeGUI' C:¥msys32¥home¥PrintApplication/win_home.cpp:3:未定義参照先`VTT for HomeGUI ' collect2.exe:エラー:ldが1終了ステータスを返しました。 make:*** [Makefile:12:InIT_Printer_Install_Assistant]エラー1
誰が私にこのことが起こっているのかを教えてもらえれば、それは非常に感謝しています。
**注意:私はまだメークファイルを扱っているので、メイクファイルの一般的なフォーマットについては必要に応じて修正してください。
'virtual〜HomeGUI(){};'非純粋仮想関数にはボディが必要です。デストラクタは純粋な仮想であっても、常にボディを持たなければなりません。 (また、 'RegisterHandlers'の本体が必要です)。 – Unimportant
今私は気が気になりません。本当にありがとう!それは働いたように見えます! – TheEggSample