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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Требуемые файлы для запуска программы  (Прочитано 19872 раз)
twp
Гость
« Ответ #15 : Март 12, 2013, 14:12 »

Как вы, милостивый государь, отследите динамически подключающуюся дллку? Улыбающийся

Да, depends её не видит. Да, её нет в зависимостях exe. Да, программа не падает, просто не запускается.

Кхм. Нигде я не писал, что он не видит QtCore с которым он слинкован Улыбающийся

Я и писал про плагины, которые являются файлами, надо же, динамических библиотек аля qgif4.dll и прочая Веселый Зависимости можно отследить только те, что слинкованы с проектом.

ИМХО тут противоречие самому себе. А на счет ошибки загрузки плагина. Я же выше написал - при ошибке загрузки плагина приложение выдает ворнинг наподобие этого

Цитировать
~/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
Записан
Bepec
Гость
« Ответ #16 : Март 12, 2013, 14:33 »

Ох tpw. динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека - это БОЛЬШАЯ разница Улыбающийся Читать надо чужие цитаты Улыбающийся

Потому что первая независима. А вторая намертво забита в зависимостях екзешника.

Список слинкованных легким касанием клавиатуры получается из файла. Динамическую определить нельзя, если нет оповещения.

Я не знаю как и под чем вы запускали своё неизвестно что Улыбающийся И где у вас выдаёт варнинг Улыбающийся

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

PS судя по выводу и флагам запуска, вы запускаете пример в линуксе с параметром командной строки с явным указанием платформы. Просто интересно, если запустить просто - он выдаст такой же вывод?
Записан
twp
Гость
« Ответ #17 : Март 12, 2013, 14:58 »

Ох tpw. динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека - это БОЛЬШАЯ разница Улыбающийся Читать надо чужие цитаты Улыбающийся

Ну как бы DLL (англ. dynamic-link library — «библиотека динамической компоновки», «динамически подключаемая библиотека»)

PS судя по выводу и флагам запуска, вы запускаете пример в линуксе с параметром командной строки с явным указанием платформы. Просто интересно, если запустить просто - он выдаст такой же вывод?
Нет, если не указывать имя платформы, то по умолчанию загрузится плагин xcb. А разве на винде не выдает ворнинг?
Записан
Bepec
Гость
« Ответ #18 : Март 12, 2013, 15:51 »

Увы, консоль в винде не настолько хороша Улыбающийся

И чтобы её подключить необходимо написать небольшую простыню кода в программе Веселый

ну я ж выделил слова, блин...
Цитировать
динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека

Динамически подключаемая = подключается непосредственно в коде, руками программиста. И упоминание о ней не найдёшь в файле.

Слинкованная = в файле exe прописаны библиотеки, необходимые для запуска программы. Их список спокойно считывается из файла тем же депендеци валкером.
Записан
twp
Гость
« Ответ #19 : Март 12, 2013, 16:34 »

Увы, консоль в винде не настолько хороша Улыбающийся

И чтобы её подключить необходимо написать небольшую простыню кода в программе Веселый

Лол, што? Т.е. с консоли приложение запустить нельзя?  Непонимающий
И если надо подключить консоль просто достаточно добавить
CONFIG += console
в pro-файл, это тоже большая проблема, ага  Смеющийся

ну я ж выделил слова, блин...
Цитировать
динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека

Динамически подключаемая = подключается непосредственно в коде, руками программиста. И упоминание о ней не найдёшь в файле.

По ходу ты путаешься в понятиях.
Есть всего два вида библиотек - динамические и статические. Со статическими все понятно. А вот динамическая библиотека может быть загружена в адресное пространство приложения двумя способами:
1. Самой ОС в процессе старта приложения
2. В течения выполнения приложения посредством QLibrary, либо через QPluginLoader, если для dll определен соответсвующий интерфейс. В этом случае нельзя определить зависимость приложения от dll

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #20 : Март 12, 2013, 17:10 »

Лол, што? Т.е. с консоли приложение запустить нельзя?  Непонимающий
И если надо подключить консоль просто достаточно добавить
CONFIG += console
в pro-файл, это тоже большая проблема, ага  Смеющийся
А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает

По ходу ты путаешься в понятиях.
...
2. В течения выполнения приложения посредством QLibrary, либо через QPluginLoader, если для dll определен соответсвующий интерфейс. В этом случае нельзя определить зависимость приложения от dll
А без QLibrary или QPluginLoader никак нельзя?
Записан
Bepec
Гость
« Ответ #21 : Март 12, 2013, 17:25 »

Кхм. twp.

Да, не выводит Веселый Бедные мы виндузятники.

Сама ОС ничего не подгружает Веселый Подгружает именно экзешник твой ) По таблице импорта функций вроде, если не ошибаюсь Веселый И именно из таблицы зависимости видны Веселый Это слинкованная библиотека Веселый

Заметь, я тебе специально цитату привожу в третий раз. Прочитай её пожалуйста Веселый

Цитировать
динамическая динамически подключаемая библиотека и динамическая слинкованная библиотека

Разберём цитату.

Встречается понятие динамическая библиотека. А давай его в конец поместим. Получится 2 типа:
1) динамически подключаемая;
2) слинкованная.

И это тип подключения Веселый При этом понятие одно и то же - динамическая библиотека Улыбающийся

PS если и этот разбор цитаты ты не осилишь, я не буду с тобой спорить Веселый Итак уже развели демагогию Веселый

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Март 12, 2013, 17:42 »

А помнится был и третий вариант, опция называлась типа "Weak Import". Нашли либу - хорошо, грузим. Нет - все равно запускаемся. Конечно надо было провериться на наличие, но в принципе было довольно удобно (без кучи оберток)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #23 : Март 12, 2013, 17:49 »

А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает
запускать в дебаг режиме, я других способов не знаю
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #24 : Март 12, 2013, 18:48 »

А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает
А окно "Вывод" (для русской версии) в MSVS уже поломалось? Вообще-то, когда Qt-программа сыпет сообщения, к примеру, о невозможности коннекта, то все попадает именно туда.
P.S. Запускать надо в режиме отладки, даже для релизной версии.
« Последнее редактирование: Март 12, 2013, 19:00 от Hellraiser » Записан
twp
Гость
« Ответ #25 : Март 12, 2013, 18:58 »

А без креатора на Вындоуз, напр в MSVC? А то пишешь printf - а он нигде не печатает
Это работает и в студии если сгенерировать VS проект из pro-файла.
Можно и самому это сделать, нужно только указать теже параметры проекта, что генерит qmake для vcproj.

А без QLibrary или QPluginLoader никак нельзя?
можно конечно. на винапи это LoadLibraryEx.
Записан
twp
Гость
« Ответ #26 : Март 12, 2013, 19:03 »

Кхм. twp.

Да, не выводит Веселый Бедные мы виндузятники.

Походу бедный только ты тут один Смеющийся

И да, найди ка мне описание динамическая слинкованная библиотека, джедай ты наш  Смеющийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #27 : Март 12, 2013, 19:15 »

можно конечно. на винапи это LoadLibraryEx.
С последующим GetProcAddress. Так что это не заслуга QLibrary/QPluginLoader  Улыбающийся

А окно "Вывод" (для русской версии) в MSVS уже поломалось? Вообще-то, когда Qt-программа сыпет сообщения, к примеру, о невозможности коннекта, то все попадает именно туда.
P.S. Запускать надо в режиме отладки, даже для релизной версии.
Вопрос был без креатора. Сообщения-то там (в IDE) есть, но назначить туда стандартный вывод просто так не удается, потому что приложение "не консольное". Можно печатать в IDE какой-то дебажной ф-цией, но это страшно неудобно. Приходится передирать примерчик (довольно мутный), тогда на запуске появляется еще одно (черное) окно приложения и в него идет print. Ну правда и в релизе работает, но все равно невдобняк.

В общем, насчет вындозной консоли Верес прав, тут его затюкали незаслуженно  Улыбающийся
Записан
Bepec
Гость
« Ответ #28 : Март 12, 2013, 19:30 »

Да twp тролль Веселый

Он не может прочитать полностью двух предложений, к сожалению Веселый Не буду его больше кормить Веселый

Но всё же странно они сделали, Qt-тролли. Хоть бы предупреждение выдавали Подмигивающий
Записан
twp
Гость
« Ответ #29 : Март 12, 2013, 21:22 »

С последующим GetProcAddress. Так что это не заслуга QLibrary/QPluginLoader  Улыбающийся
Понятное дело, но тут тред по Qt, а не по винапи, и тем более не о тонкостях загрузки dll в виндоуз.

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

Верес, ты ж меня тыкал носом в
Цитировать
динамически подключаемая библиотека и динамическая слинкованная библиотека
ну вот я хотел узнать у великого джедая, что есть "динамическая слинкованная библиотека". А ты съехал и обвинил меня в троллинге. Ну да, ты ж великий джедай, можно и не отвечать, хуле
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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