Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите начать работать с GTK под Виндой, если не сложно) 
:(
    Опции темы
юзерпиг
Дата 29.8.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Помогите новичку) 
Проект в eclipse + MinGW, понадобилось сделать простой GUI. 
Поставил GTK, сгенерил с помощью pkg-config флаги. Скопировал пример типа Hello world.
Вот что получается:

Код

make all 
Building file: ../src/test.c
Invoking: GCC C Compiler
gcc -mms-bitfields -IC:/GTK/include/gtk-2.0 -IC:/GTK/lib/gtk-2.0/include -IC:/GTK/include/atk-1.0 -IC:/GTK/include/cairo -IC:/GTK/include/pango-1.0 -IC:/GTK/include/glib-2.0 -IC:/GTK/lib/glib-2.0/include -IC:/GTK/include/libpng12 -IC:\GTK\include -IC:\GTK\include\gtk-2.0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o"src/test.o" "../src/test.c"
Finished building: ../src/test.c
 
Building target: test.exe
Invoking: MinGW C Linker
gcc -LC:/GTK/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl  -o"test.exe"  ./src/test.o   
./src/test.o: In function `main':
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:23: undefined reference to `gtk_init_abi_check'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:26: undefined reference to `gtk_window_new'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:28: undefined reference to `gtk_window_get_type'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:28: undefined reference to `g_type_check_instance_cast'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:28: undefined reference to `gtk_window_set_title'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:30: undefined reference to `gtk_window_get_type'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:30: undefined reference to `g_type_check_instance_cast'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:30: undefined reference to `gtk_window_set_default_size'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:32: undefined reference to `gtk_window_get_type'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:32: undefined reference to `g_type_check_instance_cast'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:32: undefined reference to `gtk_window_set_position'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:34: undefined reference to `gtk_widget_show'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:37: undefined reference to `g_type_check_instance_cast'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:37: undefined reference to `gtk_main_quit'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:37: undefined reference to `g_signal_connect_data'
D:/DOCUMENTS/eclipse/workspace001/test/Debug/../src/test.c:41: undefined reference to `gtk_main'
collect2: ld returned 1 exit status
make: *** [test.exe] Error 1


В C:/GTK/lib лежат все нужные либы. Что я не понимаю?  smile 
PM MAIL   Вверх
andrew_121
Дата 29.8.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Ошибка линковки. Посмотри что с библиотеками.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
юзерпиг
Дата 30.8.2009, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



В C:/GTK/lib лежат такого вида пары библиотек:

gtk-win32-2.0.lib
libgtk-win32-2.0.dll.a

pkg-config генерит ключи вида -lgtk-win32-2.0

Это правильно? Мне казалось что -lgtk-win32-2.0 должен линковать libgtk-win32-2.0.a, но с такими именами библиотек нет.



PM MAIL   Вверх
shutffl
Дата 30.8.2009, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Правильно, так как в зависимости от системы (*NIX / Windows) подставится нужное расширение..
--------------------
shadowmoon
PM MAIL   Вверх
юзерпиг
Дата 30.8.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Тогда собсно вопрос остается.. Библиотеки на месте.. Что ж он не линкует их?
PM MAIL   Вверх
shutffl
Дата 30.8.2009, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Цитата(юзерпиг @ 30.8.2009,  01:16)
Тогда собсно вопрос остается.. Библиотеки на месте.. Что ж он не линкует их?

Когда я в свое время возился с GTK, то надо было в переменну среды PATH дописать расположение.
--------------------
shadowmoon
PM MAIL   Вверх
юзерпиг
Дата 30.8.2009, 01:34 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Не, это ничего не дает(( 
Пути все вроде прописаны где надо.... Тем более не вручную, а pkg-config сгенерил, т.е. должно быть правильно. Пробовал вручную то же прописать..
PM MAIL   Вверх
andrew_121
Дата 30.8.2009, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(юзерпиг @  30.8.2009,  01:01 Найти цитируемый пост)
gtk-win32-2.0.lib

Попробуй скопировать ее же с расширением .a


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
юзерпиг
Дата 30.8.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Решение проблемы с линковкой нашлось, ключи -l<название либы> надо писать обязательно после *.o, а не до, этот порядок вызова описан в документации. (Вот ведь знал же про это, а тут забыл =))

Теперь все линкуется, но при запуске вылетает ошибка: 

Точка входа в процедуру g_access не найдена в библиотеке DLL libglib-2.0-0.dll

Библиотека на месте, в PATH путь прописан... Копирование этой DLL в папку с файлом ничего не меняет... 
В чем тут дело может быть?

PM MAIL   Вверх
andrew_121
Дата 30.8.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(юзерпиг @  30.8.2009,  13:08 Найти цитируемый пост)
Точка входа в процедуру g_access не найдена в библиотеке DLL libglib-2.0-0.dll

Возможно длл-ка собрана другим компилятором.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
юзерпиг
Дата 31.8.2009, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



то есть другой версией GCC?
как с этим бороться?
PM MAIL   Вверх
andrew_121
Дата 31.8.2009, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(юзерпиг @  31.8.2009,  00:36 Найти цитируемый пост)
то есть другой версией GCC?

Нет.
Библиотека может быть собрана в msvc а длл-ка в мингве, или на оборот.
Еще вариант, библиотека release а длл-ка debug, или на оборот.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
юзерпиг
Дата 31.8.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Цитата(andrew_121 @ 31.8.2009,  02:17)
Библиотека может быть собрана в msvc а длл-ка в мингве, или на оборот.

так это библиотека с GTK поставляется.. они рекомендуют mingw.. я им и компилю...
не хотелось бы перебирать компиляторы(
PM MAIL   Вверх
andrew_121
Дата 31.8.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



юзерпиг
Цитата(andrew_121 @  31.8.2009,  02:17 Найти цитируемый пост)
Еще вариант, библиотека release а длл-ка debug, или на оборот. 




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Любитель
Дата 31.8.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Ммм.. Не в компиляторе даже дело - дело в используемом файле для линковки и самой длл-ки. Т. к. в литнкуемом файле "вшиваются" стабы для джампа на длл-ные функции.


--------------------
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1049 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.