Использование gtkmm с Eclipse CDT - PullRequest
4 голосов
/ 10 февраля 2011

Я пытаюсь скомпилировать gtkmm Простой пример с использованием Eclipse CDT, но по какой-то причине он не работает

Я компилирую это на 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

Извините за длинный журнал ошибок, но я не знаю, как сделать его короче

Ответы [ 2 ]

4 голосов
/ 11 сентября 2011

Свойство проекта-> C / C ++ Build-> Настройки GCC C ++ Compiler-> Разное, добавьте эту строку: pkg-config gtkmm-3.0 --cflags --libs в Другие флаги. GCC C ++ Linker-> Разное, добавьте эту строку: pkg-config gtkmm-3.0 --cflags --libs во флаги Linker. Если вы используете gtkmm 2.4, просто замените «gtkmm-3.0» на «gtkmm-2.4»

Отметьте строку GCC C ++ VERBOSE (_V).

1 голос
/ 21 марта 2011

Вы должны добавить все библиотеки, перечисленные при запуске pkg-config gtkmm-2.4 --cflags --libs в терминале в Eclipse.Насколько я обнаружил, Eclipse не очень хорошо работает с pkg-config, поэтому вы должны добавить их вручную.

Щелкните правой кнопкой мыши на Project> Properties> C / C ++ Build> Settings

В GCC C ++ Compiler, в каталогах, добавьте каждый каталог, указанный при запуске pkg-config gtkmm-2.4 --cflags (только каталоги, удалите -I и -pthread)

В GCC C ++ Linker, в Библиотеки, добавьте все из pkg-config --libs (опять же, просто добавьте библиотеки, удалите -l и -pthread)

...