Russian Qt Forum
Ноябрь 24, 2024, 19:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: что же происходит при нажатии кнопки "выполнить" в QtCreator (опять про dll)  (Прочитано 6087 раз)
юрамеханик
Гость
« : Июнь 14, 2010, 15:11 »

Всем доброго времени суток!
ниже идет текст ненависти начинающего  красноглазика  (никогда не пользовавшимся юниксами при этом )
так что читать нужно только вопросы Улыбающийся


Начитался я всяких вкусностей про этот пресловутый кутэ , про сигналы слоты и про замену кутэ-sdk "мерзкому" VS
решил попробовать
по примерам книги Шлее написал небольшие приложения с кнопочками , полями ввода и тд и тп
нажал кнопочку "собрать"  все окей
нажал кнопочку "запустить"  все ОКЕЙ (приложение  запустилось все пучком)
ну я радостный полез в директорию где оно лежит
и  ,как вы догадались,  оттудова оно не запускается! Злой
попробовал примеры в папке кутэ , они естественно тоже не запускались
я весь такой злой полез в интернет ,
нашел программу depends.exe
нашел информацию что библиотеки  надо таскать с собой
нашел информацию как статически собрать саму библиотеку qt (в вики на вашем сайте) и как собирать статически сами приложения , естественно после двух часов сборки она вылетела с ошибкой....
так что пока на эти совокупления ради избавления от дополнительных файлов я плюнул

сейчас же интересует три вопроса
1. ЧТО  все таки происходит при нажатии кнопки "выполнить" ?
каким образом он "приписывает" к исполняемому файлу все нужные библиотеки
2. есть ли в самом креаторе утилита которая показывает перечень всех путей откуда берутся нужные библиотеки  при "выполнить" (я например по началу брал QtCore4.dll   из С:\Qt\2010.03\bin   а не из С:\Qt\2010.03\qt\bin а там другая версия или чего  и программа не запускалась )
3. есть ли класс в qt и примеры кода, тулза в креаторе или в mingw и примеры кода или сторонняя программа,
 которая(й) анализирует исполняемый файл (или исходные файлы!) , ищет на данной машине необходимые библиотеки
и если их не находит то: уведомляет сообщением \сует нужные библиотеки (из "таскаемых" вместе с этим инструментом)  в  нужные директории

а то как я понял если депедндс не видит какую то библиотеку , это не значит, что это единственная отсутствующая , поскольку я как понял он от этой длльки обращается к каким то еще , которых тоже может не быть
то бишь когда я проверяю исполняемый файл, и добавляю недостающие библиотеки в каталог , то количество отсутствующих библиотек увеличивается

как то хотелось бы избежать этой идиотской ручной рутинной работы
всем спасибо!
Записан
GDV1981
Гость
« Ответ #1 : Июнь 14, 2010, 15:17 »

А что если просто прописать путь к нужным библиотекам в переменную PATH? Один раз, взять так и прописать ...
Записан
ритт
Гость
« Ответ #2 : Июнь 14, 2010, 17:15 »

Оо, текст ненависти...я так понимаю, ненависти к собственному невежеству, да? Улыбающийся

1. кнопка "выполнить" креатора? тогда всё очень просто - соотв. бинарник запускается на выполнение, а если он ещё не собран, предварительно запускается сборка этого бинарника
2. нет и, надеюсь, никогда не будет
3. нет и, надеюсь, никогда не будет

а про "идиотскую ручную рутинную работу" в народе очень правильно говорят: "дурная башка ногам покоя не даёт"
Записан
юрамеханик
Гость
« Ответ #3 : Июнь 14, 2010, 20:05 »

А что если просто прописать путь к нужным библиотекам в переменную PATH? Один раз, взять так и прописать ...
мне на каждом пк прописать в переменной PATH путь до qt  на моем пк ?(шучу, но я конечно не против , лишь бы интернет всегда работал)
не забывайте что программы   должны  (а в моем случае обязательно) запускаться на других машинах на которых известно лишь "да там винда стоит, xp помоему"
только совокупляясь с qt узнал что подобные вещи надо делать ВРУЧНУЮ

Оо, текст ненависти...я так понимаю, ненависти к собственному невежеству, да? Улыбающийся

1. кнопка "выполнить" креатора? тогда всё очень просто - соотв. бинарник запускается на выполнение, а если он ещё не собран, предварительно запускается сборка этого бинарника
2. нет и, надеюсь, никогда не будет
3. нет и, надеюсь, никогда не будет

а про "идиотскую ручную рутинную работу" в народе очень правильно говорят: "дурная башка ногам покоя не даёт"

1.фухх, сложновато для меня это пока
    чем "соответствующий бинарник" отличается от исполняемого файла лежащего в соответствующей директории прописанной в DESTDIR  в .pro файле ?
"предварительно запускается сборка этого бинарника" - он суёт исполняемый файл и все беблиотеки в одно место ? я правильно понял? , просто не понимаю что значит эта фраза в данном контексте
2.почему это плохо?
3.почему это плохо?

и в чем в данном случае заключается "дурность" , то-есть как бы поступил нормальный программист
у меня такое впечатление, что я не понимаю каких то элементарных основ, которые даже в хелпах\учебниках по qt не описаны  Грустный

хотелось бы все таки развернутого ответа ну или ссылки где он уже есть
« Последнее редактирование: Июнь 14, 2010, 20:29 от юрамеханик » Записан
юрамеханик
Гость
« Ответ #4 : Июнь 14, 2010, 20:35 »

только сейчас заметил , не хочу предыдущее редактировать


1. кнопка "выполнить" креатора? тогда всё очень просто - соотв. бинарник запускается на выполнение, а если он ещё не собран, предварительно запускается сборка этого бинарника

ну ведь это же не ответ на вопрос
то что сперва  происходит сборка  "кнопочкой с молоточком " это я понял давно  Веселый  , но мне непонятно почему ВООБЩЕ происходит запуск , ибо запуск исполнительного файла "мышкой" дает совсем другой эффект
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Июнь 14, 2010, 21:08 »

Цитировать
и в чем в данном случае заключается "дурность" , то-есть как бы поступил нормальный программист
у меня такое впечатление, что я не понимаю каких то элементарных основ, которые даже в хелпах\учебниках по qt не описаны  

Имхо, вы не понимаете вообще никаких основ. Читайте литературу. И Qt4 тут вообще ни при чем, т.е. рано вам это, бросьте вы это дело!  Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
ритт
Гость
« Ответ #6 : Июнь 14, 2010, 22:08 »

искать в http://www.prog.org.ru/board_48_0.html
разворачивание приложений под разными системами - проблема настолько избитая, что я и раздел тот модерировать перестал уже год - полтора как, наверное...и настолько тривиальная, что ваши эти "только совокупляясь с qt узнал что подобные вещи надо делать ВРУЧНУЮ" у меня пробуждают лишь желание материться...но я сдерживаюсь, как видите.
как будто какая-нибудь ср???я дотнеть или мсвб не тянут никаких зависимостей и будто бы их не нужно разворачивать на целевой системе. одни только мелкософтовские .манифест-файлы чего стоят!

в общем, много читать и мало спрашивать
Записан
shirushizo
Гость
« Ответ #7 : Июнь 14, 2010, 22:41 »

только сейчас заметил , не хочу предыдущее редактировать
ну ведь это же не ответ на вопрос
то что сперва  происходит сборка  "кнопочкой с молоточком " это я понял давно  Веселый  , но мне непонятно почему ВООБЩЕ происходит запуск , ибо запуск исполнительного файла "мышкой" дает совсем другой эффект
Наверно, призапуске QtCreator используется путь к dll прописаный в нем же, а при запуске из директории операционная система ищет библиотеки там, где ей сказано?!
Записан
ритт
Гость
« Ответ #8 : Июнь 14, 2010, 23:14 »

м?я, ну, чего гадать-то? в настройках креатора сам ведь и указываешь куда установлен мингв, куда установлено кутэ - креатор лишь задаёт PATH для окружения сборки и выполнения на основе заданных настроек. укажи корявые настройки - так же точно них не будет компилиться и запускаться...или там магия, ёпт?
Записан
shirushizo
Гость
« Ответ #9 : Июнь 14, 2010, 23:33 »

м?я, ну, чего гадать-то? в настройках креатора сам ведь и указываешь куда установлен мингв, куда установлено кутэ - креатор лишь задаёт PATH для окружения сборки и выполнения на основе заданных настроек. укажи корявые настройки - так же точно них не будет компилиться и запускаться...или там магия, ёпт?
Это был сарказм с намеком на высшую истину)
Записан
Joss
Гость
« Ответ #10 : Июнь 16, 2010, 15:37 »

: нашел информацию как статически собрать саму библиотеку qt (в вики на вашем сайте) и как собирать статически сами приложения , естественно после двух часов сборки она вылетела с ошибкой....

Не естественно, на всех версиях у меня собиралось без проблем. Перечитайте описание сборки еще раз и соберите заново из чистых исходников.

: но мне непонятно почему ВООБЩЕ происходит запуск , ибо запуск исполнительного файла "мышкой" дает совсем другой эффект

Потому что пути к библиотекам не прописаны если Вы запускаете приложение не через Qt Creator. Пропишите пути или же киньте нужные библиотеки Qt (для релиза или дебага - разные) в папку где лежат остальные библиотеки (например, от "мерзкого" VS). Вы же не удивляетесь тому, что у Вас в системе присутствует Microsoft Visual C++ Redistributable?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.