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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Failed to load platform plugin "windows" [решено]  (Прочитано 12579 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июль 06, 2014, 11:29 »

Добрый день

После старта приложения, при создании QApplication либа qwindows(d).dll ищется по пути вбитому в базовую dll, (напр C:\Qt\5.2.0\msvc2012\plugins\platforms\qwindows.dll), в результате приложение не грузится при переносе на др машину. Путь можно изменить с помощью qApp->libraryPath() и qApp->setLibraryPath().  

В гугле масса ответов - но ни один из них не работает. Напр http://habrahabr.ru/post/188816/. Начало очень хорошее, я сам убедился что это не проходит. Но увы, рецепт автора у меня тоже не бычит  Плачущий И у меня нет никаких sql, просто приложение под Вындоуз.

Скопировал qwindows.dll рядом с exe и сделал setLibraryPath(<GetModuleFileName>) - не проходит. Еще пробовал прилинковать qwindows.lib, ничего не дает. Сейчас разбираюсь по исходникам, тяжело.

Спасибо
« Последнее редактирование: Июль 06, 2014, 12:02 от Igors » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Июль 06, 2014, 11:33 »

А если положить рядом с exe в директорию platforms?
Записан
Bepec
Гость
« Ответ #2 : Июль 06, 2014, 11:44 »

Только так, как предложил Old.
В Qt5 используется система наподобие плагинов Улыбающийся Таким образом механизм поиска забит у него внутри Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июль 06, 2014, 12:01 »

Да, hard-coded
Код:
Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
    (QPlatformIntegrationFactoryInterface_iid, QLatin1String("/platforms"), Qt::CaseInsensitive))
С фолдером platforms бычит

Спасибо

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

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Июль 06, 2014, 12:04 »

Да, hard-coded
Описанный в документации.
Записан
Bepec
Гость
« Ответ #5 : Июль 06, 2014, 12:37 »

И вот за это я пятёрку и не люблю Веселый Какие то ограничения создаются непонятные и криво выглядящие Веселый
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Июль 06, 2014, 12:47 »

И вот за это я пятёрку и не люблю Веселый Какие то ограничения создаются непонятные и криво выглядящие Веселый
В четверке было так же.
Записан
Paramon
Гость
« Ответ #7 : Июль 06, 2014, 12:51 »

И вот за это я пятёрку и не люблю Веселый Какие то ограничения создаются непонятные и криво выглядящие Веселый
А на 4.8.6 не так, что-ли. Установил на кнопку иконку, перенёс на чистую машину - всё работает, иконки нету. Намаялся, пока до гугла не добрался.
Записан
Bepec
Гость
« Ответ #8 : Июль 06, 2014, 13:19 »

В четверке можно отказаться от плагинов и/или указать к ним путь в Qt.conf.
А вот в пятерке нужно с собой таскать хренову тучу хзчего и всё это забито железно Улыбающийся

PS можно ли собрать как нибудь Qt 5+ без всяких icu icc и прочей хрени на 40 мб? Чтобы хотя б мб в 20 уместилося?
« Последнее редактирование: Июль 06, 2014, 13:25 от Bepec » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #9 : Июль 06, 2014, 13:27 »

В четверке можно отказаться от плагинов и/или указать к ним путь в Qt.conf.
А вот в пятерке нужно с собой таскать хренову тучу хзчего и всё это забито железно Улыбающийся
Почитайте уже документацию, в пятерке с этим все точно так же, как и в четверке
Записан
Paramon
Гость
« Ответ #10 : Июль 06, 2014, 13:36 »

В четверке можно отказаться от плагинов и/или указать к ним путь в Qt.conf.
Что значит отказаться? Дайте линк просветиться.  Непонимающий
Записан
Bepec
Гость
« Ответ #11 : Июль 06, 2014, 13:45 »

to Paramon: Отказаться я имею в виду в буквальном смысле этого слова. Можно не использовать.
Плагины не обязательны для работы программы, они лишь "приятное дополнение". Никто не заставляет их использовать. А в пятёрке platforms обязателен в любом случае. И depends не выдаёт зависимости, обо она динамически загружается Веселый

Ну и чисто не понимаю я почему вдруг неожиданно тролли взяли курс на "давайте 30 dll друг с другом скомпилируем". Если ранее это именно "библиотека С++" была, то сейчас это походит на самостоятельный рантайм Улыбающийся

to Old: вы можете переместить platforms с помощью qt.conf? Если у вас есть пятерка, попробуйте пожалуйста и отпишитесь.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #12 : Июль 06, 2014, 15:25 »

to Old: вы можете переместить platforms с помощью qt.conf? Если у вас есть пятерка, попробуйте пожалуйста и отпишитесь.
Могу, пятерка есть, отписался.
Записан
Bepec
Гость
« Ответ #13 : Июль 06, 2014, 15:33 »

Пасип Улыбающийся Ну тогда остаётся претензия по "необходимости" Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Июль 06, 2014, 15:51 »

Ну тогда остаётся претензия по "необходимости" Улыбающийся
У меня эта претензия уже несколько лет как...
Мне все эти нитки, сеть и остальная фигня, которую они туда понапихали и даром ненужны.
Но делать нечего, приходится мириться. Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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