Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Интеграция svg-рисунков в исполняемый файл 
V
    Опции темы
Usper
Дата 30.11.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: нет
Всего: 15



Я добавил в проект на Qt 4.7.2 в ресурсы несколько svg-иконок для кнопок. При выполнении исполняемого файла из-под среды иконки отлично отображаются. После переноса исполняемого файла в другую папку (запуск не из среды Qt) на этом же компьютере и добавления библиотеки QtSvg4.dll  в папку с программой тоже никаких проблем (пока не добавил эту библиотеку программа запускалась, но иконки не отображались). Но как только перенёс папку и необходимые, на мой взгляд, библиотеки на другой компьютер иконки перестали отображаться. В чём может быть причина? Заменил одну svg-иконку на такую же, но в bmp-формате и эта иконка стала отображаться на другом компьютере. Я так думаю проблема в нехватке какой-то библиотеки. Однако я скопировал все библиотеки из папки C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin (только этот путь относится к Qt из глобальной перемнной path на компьютере с установленным Qt), но проблема не решилась. Вместе с исполняемым файлом копирую следующие библиотеки: libgcc_s_dw2-1.dll, mingwm10.dll, QtCore4.dll, QtGui4.dll, QtSvg4.dll.
P.S. библиотеки из папки C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats тоже копировал.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
bsa
Дата 30.11.2011, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Тебе необходимо скопировать plugins\imageformats с учетом структуры каталогов в папку с программой. А так же добавить в список поиска библиотек каталог программы. Почитай описание QLibrary.
PM   Вверх
Usper
Дата 1.12.2011, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: нет
Всего: 15



Скопировал папку imageformats с содержимым в папку к программе, в main.cpp добавил сразу после определения app:
Код

...
app.addLibraryPath(app.applicationDirPath());
...

ноль эффекта :(


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
bsa
Дата 1.12.2011, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



блин. у тебя в каталоге программы должен быть подкаталог plugins. В нем imageformats...
PM   Вверх
Usper
Дата 1.12.2011, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: нет
Всего: 15



Вроде пишут, что достаточно подкаталога imageformats, plugins не нужен, но так тоже попробовал - не работает. :( Может быть нужно что-нибудь в pro файл добавить (но почему тогда на компе с Qt всё нормально запускается?)?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
bsa
Дата 1.12.2011, 11:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Usper, потому что в библиотеки Qt жестко прописываются пути к каталогу установки.
У себя я делал так:
Код
    QApplication::addLibraryPath(QApplication::applicationDirPath() + QLatin1String("/Plugins"));

Кстати, проверь все *.dll на требование отсутствующих библиотек (я делаю это через total commander - открываю просмотр, включаю поиск по маске .DLL без учета регистра).
PM   Вверх
Usper
Дата 1.12.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: нет
Всего: 15



Спасибо за подсказку! Я натравил на исполняемый файл DependencyWalker`а (ищёт зависимости исполняемого файла от библиотек, поиск строки "svg" непосредственно в файле с помощью текстового редактора нашёл только имена самих иконок, но не библиотек) и по поиску упоминаний строки "svg" нашёл, что есть зависимость от \iconengines\qsvgicon4.dll, а не от \imageformats\qsvg4.dll.
Кстати подпапка Plugins не нужна, 
Цитата(bsa @  1.12.2011,  12:55 Найти цитируемый пост)
  
Код

QApplication::addLibraryPath(QApplication::applicationDirPath() + QLatin1String("/Plugins"));

это аналогично моему
Код

app.addLibraryPath(app.applicationDirPath());
, но в моём случае папки с плагинами можно кидать в папку с исполяемым файлом.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1082 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.