Название: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: eXeLe от Март 11, 2013, 15:16 Qt5 с mingw4.7, QtCreator 2.6
Написал программку Qt Gui, через крейтер запускается отлично, переключаюсь на "Release", компилирую. Пробую запускать из папки с программой - хочет dll-ок. Кидаю ей: D3DCompiler_43.dll icudt49.dll icuin49.dll icuuc49.dll libgcc_s_sjlj-1.dll libGLESv2.dll libstdc++-6.dll libwinpthread-1.dll Qt5Core.dll Qt5Gui.dll Qt5Sql.dll Qt5Widgets.dll Дллки брал тут: %путь_к_Qt%\Qt5.0.1\5.0.1\mingw47_32\bin Так же в корне каталога со своей прогой создал папку sqldrivers и скинул туда все содержимое: %путь_к_Qt%\Qt5.0.1\5.0.1\mingw47_32\plugins\sqldrivers (дрова odbc) Но вместо запуска, прога начинает ругаться на: Цитировать Microsoft Visual C++ Runtime Library К сожалению, это дает мало понимания того, в чем же осталась проблема?This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. Были мысли, что дллки беру не оттуда, но только в %путь_к_Qt%\Qt5.0.1\5.0.1\mingw47_32\bin есть все, что нужно проге. Название: Re: Требуемые файлы для запуска программы Отправлено: alex312 от Март 11, 2013, 15:26 http://www.prog.org.ru/topic_24263_0.html
Название: Re: Требуемые файлы для запуска программы Отправлено: eXeLe от Март 11, 2013, 15:28 там о 10-й студии речь.
я сразу указал, что mingw у меня. на всякий случай попробовал скопировать platforms - реакции ноль Название: Re: Требуемые файлы для запуска программы Отправлено: alexis031182 от Март 11, 2013, 15:31 В списке не хватает "platforms/qwindows.dll". Для mingw оно тоже нужно.
Название: Re: Требуемые файлы для запуска программы Отправлено: eXeLe от Март 11, 2013, 15:32 да, по совету выше все же скопировал каталог platforms к себе.
лучше не стало, но раз нужно - пусть будет =) Название: Re: Требуемые файлы для запуска программы Отправлено: eXeLe от Март 11, 2013, 15:59 погуглил еще усерднее на тему "qt5 mingw dependencies"
среди перекрестных ссылок между темами различных форумов набрел на требование libEGL.dll, которое никак не указывается программой, как нехватающая ДЛЛка. Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: alexis031182 от Март 11, 2013, 17:39 Да, egl тоже обязательно.
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 11, 2013, 19:30 Qt5 вообще построена на противоречиях :D Я целых 20 минут искал и думал, почему ж прога не запускается ) А там всего то была дллка, цепляющаяся динамически (тот самый platforms). Почему сделано так - непонятно. Вероятно от великого желания соблюсти стандарт плагинов :D
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: kambala от Март 11, 2013, 20:07 зачем сидеть думать, если есть тотал коммандер и dependency walker?
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 11, 2013, 21:14 Как вы, милостивый государь, отследите динамически подключающуюся дллку? :)
Да, depends её не видит. Да, её нет в зависимостях exe. Да, программа не падает, просто не запускается. PS так же можно попытаться отследить зависимость от openssl. Та же фигня с плагинами имейджев и драйверов sql :D Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: kambala от Март 11, 2013, 21:36 QtCore, QtGui и т.п. тоже ведь динамически цепляются, так что ты какую-то неверную терминологию используешь
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 11, 2013, 21:38 лол, как это не видит? Может имеется ввиду плагин? Тогда нужно смотреть вывод приложения в консоль - наверняка приложение ругнется что не загружен плагин.
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 11, 2013, 21:53 Увы, нет, не видит. Он видит слинкованные библиотеки и зависимости. А плагины Qt подгружаются динамически. Используется Qt-шная система плагинов. Т.е. там прямо в коде динамически вытаскиваются функции и объекты. Можно посмотреть на примере других любых плагинов.
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 11, 2013, 22:50 плагин конечно не видит, на то он и плагин, но ты ведь указал, что не видит зависимости от dll, таких как QtCore или QtGui.
Вот что выдает для дизайнера в убунте: Цитата: Terminal sergiy@vmware:~$ ldd /usr/local/Qt-5.0.1/bin/designer Что-то подобное должно быть и на винде.linux-gate.so.1 => (0xb76e7000) libQt5DesignerComponents.so.5 => /usr/local/Qt-5.0.1/lib/libQt5DesignerComponents.so.5 (0xb73d8000) libQt5PrintSupport.so.5 => /usr/local/Qt-5.0.1/lib/libQt5PrintSupport.so.5 (0xb737e000) libQt5Designer.so.5 => /usr/local/Qt-5.0.1/lib/libQt5Designer.so.5 (0xb6e0e000) libQt5Widgets.so.5 => /usr/local/Qt-5.0.1/lib/libQt5Widgets.so.5 (0xb6761000) libQt5Network.so.5 => /usr/local/Qt-5.0.1/lib/libQt5Network.so.5 (0xb6632000) libQt5Xml.so.5 => /usr/local/Qt-5.0.1/lib/libQt5Xml.so.5 (0xb65ea000) libQt5Gui.so.5 => /usr/local/Qt-5.0.1/lib/libQt5Gui.so.5 (0xb614d000) libQt5Core.so.5 => /usr/local/Qt-5.0.1/lib/libQt5Core.so.5 (0xb5c56000) ... Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 12, 2013, 06:58 Кхм. Нигде я не писал, что он не видит QtCore с которым он слинкован :)
Я и писал про плагины, которые являются файлами, надо же, динамических библиотек аля qgif4.dll и прочая :D Зависимости можно отследить только те, что слинкованы с проектом. Для плагинов же используется обычное дёрганье по имени, вытаскивание объекта или функций. Это отследить невозможно сразу, т.е. зависимости эти можно увидеть только отслеживая обращения к диску :D Собственно именно на это ушли мои 20 минут. :D PS в принципе плагины хорошо, но такие как из каталога platforms - это бред. Нигде про них особо не упомянуто, в проекте их увидеть нереально. (ну или я не обращал внимания) Т.е. ты не узнаешь об этой зависимости и будешь много думать, запустив прогу на виртуалке и недоумевая, почему ничего не работает :D Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 12, 2013, 14:12 Как вы, милостивый государь, отследите динамически подключающуюся дллку? :) Да, depends её не видит. Да, её нет в зависимостях exe. Да, программа не падает, просто не запускается. Кхм. Нигде я не писал, что он не видит QtCore с которым он слинкован :) Я и писал про плагины, которые являются файлами, надо же, динамических библиотек аля qgif4.dll и прочая :D Зависимости можно отследить только те, что слинкованы с проектом. ИМХО тут противоречие самому себе. А на счет ошибки загрузки плагина. Я же выше написал - при ошибке загрузки плагина приложение выдает ворнинг наподобие этого Цитировать ~/work/qt5/qtbase/examples/widgets/widgets/analogclock$ ./analogclock -platform windows Failed to load platform plugin "windows". Available platforms are: eglfs (from /usr/local/Qt-5.0.1/plugins/platforms) kms (from /usr/local/Qt-5.0.1/plugins/platforms) linuxfb (from /usr/local/Qt-5.0.1/plugins/platforms) minimal (from /usr/local/Qt-5.0.1/plugins/platforms) minimalegl (from /usr/local/Qt-5.0.1/plugins/platforms) wayland-egl (from /usr/local/Qt-5.0.1/plugins/platforms) wayland (from /usr/local/Qt-5.0.1/plugins/platforms) wayland-xcomposite (from /usr/local/Qt-5.0.1/plugins/platforms) xcb (from /usr/local/Qt-5.0.1/plugins/platforms) eglfs kms linuxfb minimal minimalegl wayland-egl wayland wayland-xcomposite xcb Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 12, 2013, 14:33 Ох tpw. динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека - это БОЛЬШАЯ разница :) Читать надо чужие цитаты :)
Потому что первая независима. А вторая намертво забита в зависимостях екзешника. Список слинкованных легким касанием клавиатуры получается из файла. Динамическую определить нельзя, если нет оповещения. Я не знаю как и под чем вы запускали своё неизвестно что :) И где у вас выдаёт варнинг :) Запущенная GUI программа под виндой не выдаёт никаких сообщений в консоль, если не произвести жуткие экзекуции в коде программы со специальным подключением консоли. PS судя по выводу и флагам запуска, вы запускаете пример в линуксе с параметром командной строки с явным указанием платформы. Просто интересно, если запустить просто - он выдаст такой же вывод? Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 12, 2013, 14:58 Ох tpw. динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека - это БОЛЬШАЯ разница :) Читать надо чужие цитаты :) Ну как бы DLL (англ. dynamic-link library — «библиотека динамической компоновки», «динамически подключаемая библиотека») (http://ru.wikipedia.org/wiki/Динамически_подключаемая_библиотека) PS судя по выводу и флагам запуска, вы запускаете пример в линуксе с параметром командной строки с явным указанием платформы. Просто интересно, если запустить просто - он выдаст такой же вывод? Нет, если не указывать имя платформы, то по умолчанию загрузится плагин xcb. А разве на винде не выдает ворнинг?Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 12, 2013, 15:51 Увы, консоль в винде не настолько хороша :)
И чтобы её подключить необходимо написать небольшую простыню кода в программе :D ну я ж выделил слова, блин... Цитировать динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека Динамически подключаемая = подключается непосредственно в коде, руками программиста. И упоминание о ней не найдёшь в файле. Слинкованная = в файле exe прописаны библиотеки, необходимые для запуска программы. Их список спокойно считывается из файла тем же депендеци валкером. Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 12, 2013, 16:34 Увы, консоль в винде не настолько хороша :) И чтобы её подключить необходимо написать небольшую простыню кода в программе :D Лол, што? Т.е. с консоли приложение запустить нельзя? ??? И если надо подключить консоль просто достаточно добавить CONFIG += console в pro-файл, это тоже большая проблема, ага ;D ну я ж выделил слова, блин... Цитировать динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека Динамически подключаемая = подключается непосредственно в коде, руками программиста. И упоминание о ней не найдёшь в файле. По ходу ты путаешься в понятиях. Есть всего два вида библиотек - динамические и статические. Со статическими все понятно. А вот динамическая библиотека может быть загружена в адресное пространство приложения двумя способами: 1. Самой ОС в процессе старта приложения 2. В течения выполнения приложения посредством QLibrary, либо через QPluginLoader, если для dll определен соответсвующий интерфейс. В этом случае нельзя определить зависимость приложения от dll Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Igors от Март 12, 2013, 17:10 Лол, што? Т.е. с консоли приложение запустить нельзя? ??? А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатаетИ если надо подключить консоль просто достаточно добавить CONFIG += console в pro-файл, это тоже большая проблема, ага ;D По ходу ты путаешься в понятиях. А без QLibrary или QPluginLoader никак нельзя?... 2. В течения выполнения приложения посредством QLibrary, либо через QPluginLoader, если для dll определен соответсвующий интерфейс. В этом случае нельзя определить зависимость приложения от dll Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 12, 2013, 17:25 Кхм. twp.
Да, не выводит :D Бедные мы виндузятники. Сама ОС ничего не подгружает :D Подгружает именно экзешник твой ) По таблице импорта функций вроде, если не ошибаюсь :D И именно из таблицы зависимости видны :D Это слинкованная библиотека :D Заметь, я тебе специально цитату привожу в третий раз. Прочитай её пожалуйста :D Цитировать динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека Разберём цитату. Встречается понятие динамическая библиотека. А давай его в конец поместим. Получится 2 типа: 1) динамически подключаемая; 2) слинкованная. И это тип подключения :D При этом понятие одно и то же - динамическая библиотека :) PS если и этот разбор цитаты ты не осилишь, я не буду с тобой спорить :D Итак уже развели демагогию :D Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Igors от Март 12, 2013, 17:42 А помнится был и третий вариант, опция называлась типа "Weak Import". Нашли либу - хорошо, грузим. Нет - все равно запускаемся. Конечно надо было провериться на наличие, но в принципе было довольно удобно (без кучи оберток)
Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: kambala от Март 12, 2013, 17:49 А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает запускать в дебаг режиме, я других способов не знаюНазвание: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Hellraiser от Март 12, 2013, 18:48 А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает А окно "Вывод" (для русской версии) в MSVS уже поломалось? Вообще-то, когда Qt-программа сыпет сообщения, к примеру, о невозможности коннекта, то все попадает именно туда.P.S. Запускать надо в режиме отладки, даже для релизной версии. Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 12, 2013, 18:58 А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает Это работает и в студии если сгенерировать VS проект из pro-файла.Можно и самому это сделать, нужно только указать теже параметры проекта, что генерит qmake для vcproj. А без QLibrary или QPluginLoader никак нельзя? можно конечно. на винапи это LoadLibraryEx.Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 12, 2013, 19:03 Кхм. twp. Да, не выводит :D Бедные мы виндузятники. Походу бедный только ты тут один ;D И да, найди ка мне описание динамическая слинкованная библиотека, джедай ты наш ;D Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Igors от Март 12, 2013, 19:15 можно конечно. на винапи это LoadLibraryEx. С последующим GetProcAddress. Так что это не заслуга QLibrary/QPluginLoader :)А окно "Вывод" (для русской версии) в MSVS уже поломалось? Вообще-то, когда Qt-программа сыпет сообщения, к примеру, о невозможности коннекта, то все попадает именно туда. Вопрос был без креатора. Сообщения-то там (в IDE) есть, но назначить туда стандартный вывод просто так не удается, потому что приложение "не консольное". Можно печатать в IDE какой-то дебажной ф-цией, но это страшно неудобно. Приходится передирать примерчик (довольно мутный), тогда на запуске появляется еще одно (черное) окно приложения и в него идет print. Ну правда и в релизе работает, но все равно невдобняк.P.S. Запускать надо в режиме отладки, даже для релизной версии. В общем, насчет вындозной консоли Верес прав, тут его затюкали незаслуженно :) Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: Bepec от Март 12, 2013, 19:30 Да twp тролль :D
Он не может прочитать полностью двух предложений, к сожалению :D Не буду его больше кормить :D Но всё же странно они сделали, Qt-тролли. Хоть бы предупреждение выдавали ;) Название: Re: [РЕШЕНО]Требуемые файлы для запуска программы Отправлено: twp от Март 12, 2013, 21:22 С последующим GetProcAddress. Так что это не заслуга QLibrary/QPluginLoader :) Понятное дело, но тут тред по Qt, а не по винапи, и тем более не о тонкостях загрузки dll в виндоуз.В общем, насчет вындозной консоли Верес прав, тут его затюкали незаслуженно :) Согласен что виндовая консоль это не терминал линкуса, но получить отладочный вывод на консоль не должно быть большой проблемой.Верес, ты ж меня тыкал носом в Цитировать динамически подключаемая библиотека и динамическая слинкованная библиотека ну вот я хотел узнать у великого джедая, что есть "динамическая слинкованная библиотека". А ты съехал и обвинил меня в троллинге. Ну да, ты ж великий джедай, можно и не отвечать, хуле |