| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > помогите начать работать с GTK под Виндой |
| Автор: юзерпиг 29.8.2009, 15:11 | ||
| Помогите новичку) Проект в eclipse + MinGW, понадобилось сделать простой GUI. Поставил GTK, сгенерил с помощью pkg-config флаги. Скопировал пример типа Hello world. Вот что получается:
В C:/GTK/lib лежат все нужные либы. Что я не понимаю? |
| Автор: andrew_121 29.8.2009, 15:35 |
| Ошибка линковки. Посмотри что с библиотеками. |
| Автор: юзерпиг 30.8.2009, 01:01 |
| В 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, но с такими именами библиотек нет. |
| Автор: shutffl 30.8.2009, 01:03 |
| Правильно, так как в зависимости от системы (*NIX / Windows) подставится нужное расширение.. |
| Автор: юзерпиг 30.8.2009, 01:16 |
| Тогда собсно вопрос остается.. Библиотеки на месте.. Что ж он не линкует их? |
| Автор: shutffl 30.8.2009, 01:24 | ||
Когда я в свое время возился с GTK, то надо было в переменну среды PATH дописать расположение. |
| Автор: юзерпиг 30.8.2009, 01:34 |
| Не, это ничего не дает(( Пути все вроде прописаны где надо.... Тем более не вручную, а pkg-config сгенерил, т.е. должно быть правильно. Пробовал вручную то же прописать.. |
| Автор: andrew_121 30.8.2009, 01:46 |
Попробуй скопировать ее же с расширением .a |
| Автор: юзерпиг 30.8.2009, 13:08 |
| Решение проблемы с линковкой нашлось, ключи -l<название либы> надо писать обязательно после *.o, а не до, этот порядок вызова описан в документации. (Вот ведь знал же про это, а тут забыл =)) Теперь все линкуется, но при запуске вылетает ошибка: Точка входа в процедуру g_access не найдена в библиотеке DLL libglib-2.0-0.dll Библиотека на месте, в PATH путь прописан... Копирование этой DLL в папку с файлом ничего не меняет... В чем тут дело может быть? |
| Автор: andrew_121 30.8.2009, 19:02 | ||
Возможно длл-ка собрана другим компилятором. |
| Автор: юзерпиг 31.8.2009, 00:36 |
| то есть другой версией GCC? как с этим бороться? |
| Автор: andrew_121 31.8.2009, 02:17 |
Нет. Библиотека может быть собрана в msvc а длл-ка в мингве, или на оборот. Еще вариант, библиотека release а длл-ка debug, или на оборот. |
| Автор: юзерпиг 31.8.2009, 09:21 | ||
так это библиотека с GTK поставляется.. они рекомендуют mingw.. я им и компилю... не хотелось бы перебирать компиляторы( |
| Автор: andrew_121 31.8.2009, 10:17 | ||
юзерпиг,
|
| Автор: Любитель 31.8.2009, 14:19 |
| Ммм.. Не в компиляторе даже дело - дело в используемом файле для линковки и самой длл-ки. Т. к. в литнкуемом файле "вшиваются" стабы для джампа на длл-ные функции. |
| Автор: korbian 31.8.2009, 15:46 |
| Любитель, и если не ошибаюсь dlltool поможет решить эту проблему! |
| Автор: Любитель 31.8.2009, 17:53 |
| Я имею ввиду, что линковка быть может производится с файлом не от той длл-ки. Т. е. два разных билда (чем именно разных - вопрос другой, мб и дебаг/релиз). Именно в таком случае, всё соберётся, но работать не будет |
| Автор: юзерпиг 31.8.2009, 21:48 |
| хм.. а откуда такое несоответствие версий могло произойти? у меня установлен GTK как есть, скачивал вроде бы одним пакетом... |
| Автор: Любитель 31.8.2009, 22:18 |
| Больше длл-ок с таким же именем нигде нету в этом пакете? |
| Автор: andrew_121 31.8.2009, 22:24 |
| Покажи версию компилятора. И ссылку откуда GTK скачал. Добавлено через 32 секунды И код выложи. Попробую скомпилить. |
| Автор: юзерпиг 31.8.2009, 23:13 |
| огромное спасибо за советы) я пошарил в поисках библиотек и обнаружил аж несколько их, причем старых версий у себя в system32.. как и когда они туда попали - не понятно. с чем то когда то поставились, но я об этом не узнал.. теперь запускается окошечко (правда еще появляется консоль, не знаю пока как ее убрать), буду дальше ковыряться... чувствую вопросы еще будут.. |
| Автор: andrew_121 31.8.2009, 23:24 | ||||
Добавь:
|
| Автор: юзерпиг 1.9.2009, 00:35 | ||||
хм.. это ключик для линкера? он не признал такого(( |
| Автор: andrew_121 1.9.2009, 00:47 |
| юзерпиг, Да, для линкера. Не мог он не признать его. |
| Автор: юзерпиг 1.9.2009, 01:04 |
| спасибо, разобрался) сделал так: gcc -Wl,--subsystem,windows |
| Автор: andrew_121 1.9.2009, 01:43 |
| Ты работаешь в Eclipse? Он генерирует Makefile, или показывает командную строку для компиляции? Выложи сюда. |
| Автор: юзерпиг 1.9.2009, 22:54 | ||||
| Да, в eclipse. Makefile написать поленился) забил все опции в настройки. Для компиляции eclipse генерит вот что:
А это для линковки:
Добавлено через 9 минут и 14 секунд А что мне придется таскать с моей программой кроме библиотек? В C:\GTK\etc\gtk-2.0 есть файл gtkrc со строкой gtk-theme-name = "MS-Windows", проверил, вид окошек зависит от темы, если файла нет, тема какая-то совсем убогая, прям как в 3.11(( |
| Автор: andrew_121 1.9.2009, 23:57 |
| Не знаю как ты настроил эклайпс, но в нем нет нужных директив. тут я ничего порекомендовать не могу. |
| Автор: юзерпиг 2.9.2009, 00:26 | ||
мм, ты о чем конкретно, каких директив нет? |
| Автор: andrew_121 2.9.2009, 00:30 |
нужных директив для линкера нет. |
| Автор: юзерпиг 2.9.2009, 00:47 |
| так нужные директивы я ж всегда могу вручную прописать?... а о каких директивах речь? Добавлено через 3 минуты и 4 секунды если речь о $(OBJS) $(USER_OBJS) $(LIBS), то они прописаны в отдельном файле |
| Автор: korbian 2.9.2009, 08:50 | ||
обратите внимание на эту строчку
через опцию -L подключена директория от куда линковать библиотеки, а самих библиотек для линковки я не увидел(то есть опцию -l) в настройках eclipse задействовать эти опции можно в этом окне: ![]() |
| Автор: юзерпиг 2.9.2009, 09:55 | ||||
Да, у меня так и сделано. Библиотеки eclipse пишет в ${LIBS}, которая хранится в отдельном файле. Вот эти файлы подключены:
|
| Автор: юзерпиг 2.9.2009, 21:16 |
| Все таки остался вопрос, что мне придется таскать вместе со своей программой? Все эти длл-ки? И как быть с файлом gtkrc со строкой gtk-theme-name = "MS-Windows"? Если я перенесу свою программу на чистую винду, как мне установить тему? Подскажите кто знает.. |
| Автор: andrew_121 2.9.2009, 21:22 | ||
http://www.google.ru/url?sa=t&source=web&ct=res&cd=2&url=http%3A%2F%2Fru.wikipedia.org%2Fwiki%2FDependency_Walker&ei=ureeSu3hHI-QsAbO_8ipAQ&rct=j&q=dependency+walker&usg=AFQjCNHVx7vw5CzDa89CknpaPXSgH0t21w&sig2=8jIGd-5fHYpvtKs2sz0bUw |