4

我正在尝试使用 Eclipse CDT 编译 gtkmm简单示例,但由于某种原因它无法正常工作

我在 Mandriva Linux 和 GCC 4.4.3 上编译这个

我收到此错误,我认为这是一个链接错误:

Building target: Test
Invoking: GCC C++ Linker
g++ -L/usr/include/gtkmm-2.4 -o"Test"  ./test.o   
./test.o: In function `main':
test.cpp:(.text+0x39): undefined reference to `Gtk::Main::Main(int&, char**&, bool)'
test.cpp:(.text+0x43): undefined reference to `Gtk::Window::Window(Gtk::WindowType)'
test.cpp:(.text+0x4b): undefined reference to `Gtk::Main::run(Gtk::Window&)'
test.cpp:(.text+0x53): undefined reference to `Gtk::Window::~Window()'
test.cpp:(.text+0x5b): undefined reference to `Gtk::Main::~Main()'
test.cpp:(.text+0x82): undefined reference to `Gtk::Main::~Main()'
test.cpp:(.text+0x95): undefined reference to `Gtk::Window::~Window()'
./test.o: In function `global constructors keyed to main':
test.cpp:(.text+0xaf): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0xbe): undefined reference to `Glib::ustring::~ustring()'
test.cpp:(.text+0xd2): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0xe1): undefined reference to `Glib::ustring::~ustring()'
test.cpp:(.text+0xf5): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0x104): undefined reference to `Glib::ustring::~ustring()'
test.cpp:(.text+0x118): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0x127): undefined reference to `Glib::ustring::~ustring()'
test.cpp:(.text+0x13b): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0x14a): undefined reference to `Glib::ustring::~ustring()'
test.cpp:(.text+0x15e): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0x16d): undefined reference to `Glib::ustring::~ustring()'
test.cpp:(.text+0x181): undefined reference to `Glib::ustring::ustring(char const*)'
test.cpp:(.text+0x190): undefined reference to `Glib::ustring::~ustring()'
collect2: ld returned 1 exit status
make: *** [Test] Error 1

抱歉,错误日志很长,但我不知道如何使它更短

4

2 回答 2

4

Project Property->C/C++ Build->Settings GCC C++ Compiler->Miscellaneous,将此字符串:添加pkg-config gtkmm-3.0 --cflags --libs到其他标志中。GCC C++ Linker->Miscellaneous,添加这个字符串:pkg-config gtkmm-3.0 --cflags --libs在链接器标志中。如果您使用的是 gtkmm 2.4,只需将“gtkmm-3.0”替换为“gtkmm-2.4”

勾选 GCC C++ COMPILER VERBOSE (_V) 字符串。

于 2011-09-11T14:16:25.110 回答
1

您必须将pkg-config gtkmm-2.4 --cflags --libs在终端中运行时列出的所有库添加到 Eclipse。据我发现,Eclipse 不能很好地使用 pkg-config,因此您必须手动添加它们。

右键单击您的项目 > 属性 > C/C++ 构建 > 设置

在 GCC C++ 编译器下,在目录中,添加运行时列出 pkg-config gtkmm-2.4 --cflags 的每个目录(只是目录,删除 -I 和 -pthread)

在 GCC C++ 链接器下,在库中,添加所有内容 pkg-config --libs (同样,只需添加库,删除 -l 和 -pthread)

于 2011-03-21T11:51:31.333 回答