![]() |
|
![]() ![]() ![]() |
|
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Помогите новичку)
Проект в eclipse + MinGW, понадобилось сделать простой GUI. Поставил GTK, сгенерил с помощью pkg-config флаги. Скопировал пример типа Hello world. Вот что получается:
В C:/GTK/lib лежат все нужные либы. Что я не понимаю? ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Ошибка линковки. Посмотри что с библиотеками.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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, но с такими именами библиотек нет. |
|||
|
||||
shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Правильно, так как в зависимости от системы (*NIX / Windows) подставится нужное расширение..
--------------------
shadowmoon |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Тогда собсно вопрос остается.. Библиотеки на месте.. Что ж он не линкует их?
|
|||
|
||||
shutffl |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 18.8.2008 Репутация: нет Всего: 3 |
Когда я в свое время возился с GTK, то надо было в переменну среды PATH дописать расположение. --------------------
shadowmoon |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Не, это ничего не дает((
Пути все вроде прописаны где надо.... Тем более не вручную, а pkg-config сгенерил, т.е. должно быть правильно. Пробовал вручную то же прописать.. |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Решение проблемы с линковкой нашлось, ключи -l<название либы> надо писать обязательно после *.o, а не до, этот порядок вызова описан в документации. (Вот ведь знал же про это, а тут забыл =))
Теперь все линкуется, но при запуске вылетает ошибка: Точка входа в процедуру g_access не найдена в библиотеке DLL libglib-2.0-0.dll Библиотека на месте, в PATH путь прописан... Копирование этой DLL в папку с файлом ничего не меняет... В чем тут дело может быть? |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Возможно длл-ка собрана другим компилятором. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
то есть другой версией GCC?
как с этим бороться? |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Нет. Библиотека может быть собрана в msvc а длл-ка в мингве, или на оборот. Еще вариант, библиотека release а длл-ка debug, или на оборот. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
так это библиотека с GTK поставляется.. они рекомендуют mingw.. я им и компилю... не хотелось бы перебирать компиляторы( |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
юзерпиг,
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Ммм.. Не в компиляторе даже дело - дело в используемом файле для линковки и самой длл-ки. Т. к. в литнкуемом файле "вшиваются" стабы для джампа на длл-ные функции.
|
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Любитель, и если не ошибаюсь dlltool поможет решить эту проблему!
-------------------- korbian © |
|||
|
||||
andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Я подумал что:
Так как цель собирается. -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Я имею ввиду, что линковка быть может производится с файлом не от той длл-ки. Т. е. два разных билда (чем именно разных - вопрос другой, мб и дебаг/релиз). Именно в таком случае, всё соберётся, но работать не будет
![]() |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
хм.. а откуда такое несоответствие версий могло произойти? у меня установлен GTK как есть, скачивал вроде бы одним пакетом...
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Больше длл-ок с таким же именем нигде нету в этом пакете?
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Покажи версию компилятора. И ссылку откуда GTK скачал.
Добавлено через 32 секунды И код выложи. Попробую скомпилить. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
огромное спасибо за советы) я пошарил в поисках библиотек и обнаружил аж несколько их, причем старых версий у себя в system32.. как и когда они туда попали - не понятно. с чем то когда то поставились, но я об этом не узнал..
теперь запускается окошечко (правда еще появляется консоль, не знаю пока как ее убрать), буду дальше ковыряться... чувствую вопросы еще будут.. |
|||
|
||||
andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Добавь:
Это сообщение отредактировал(а) andrew_121 - 31.8.2009, 23:26 -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
юзерпиг |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
хм.. это ключик для линкера? он не признал такого(( Это сообщение отредактировал(а) юзерпиг - 1.9.2009, 00:36 |
||||
|
|||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
юзерпиг, Да, для линкера. Не мог он не признать его.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
спасибо, разобрался) сделал так: gcc -Wl,--subsystem,windows
Это сообщение отредактировал(а) юзерпиг - 1.9.2009, 01:21 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Ты работаешь в Eclipse? Он генерирует Makefile, или показывает командную строку для компиляции?
Выложи сюда. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Да, в eclipse. Makefile написать поленился) забил все опции в настройки.
Для компиляции eclipse генерит вот что:
А это для линковки:
Добавлено через 9 минут и 14 секунд А что мне придется таскать с моей программой кроме библиотек? В C:\GTK\etc\gtk-2.0 есть файл gtkrc со строкой gtk-theme-name = "MS-Windows", проверил, вид окошек зависит от темы, если файла нет, тема какая-то совсем убогая, прям как в 3.11(( |
||||
|
|||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Не знаю как ты настроил эклайпс, но в нем нет нужных директив. тут я ничего порекомендовать не могу.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
мм, ты о чем конкретно, каких директив нет? |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
так нужные директивы я ж всегда могу вручную прописать?... а о каких директивах речь?
Добавлено через 3 минуты и 4 секунды если речь о $(OBJS) $(USER_OBJS) $(LIBS), то они прописаны в отдельном файле |
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
обратите внимание на эту строчку
через опцию -L подключена директория от куда линковать библиотеки, а самих библиотек для линковки я не увидел(то есть опцию -l) в настройках eclipse задействовать эти опции можно в этом окне: ![]() -------------------- korbian © |
|||
|
||||
юзерпиг |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Да, у меня так и сделано. Библиотеки eclipse пишет в ${LIBS}, которая хранится в отдельном файле. Вот эти файлы подключены:
|
||||
|
|||||
юзерпиг |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Все таки остался вопрос, что мне придется таскать вместе со своей программой? Все эти длл-ки? И как быть с файлом gtkrc со строкой gtk-theme-name = "MS-Windows"? Если я перенесу свою программу на чистую винду, как мне установить тему? Подскажите кто знает..
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
http://www.google.ru/url?sa=t&source=w...fHYpvtKs2sz0bUw -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |