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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема отображения картинки svg при статической сборке библиотеки (windows)  (Прочитано 6703 раз)
vanessa
Гость
« : Май 05, 2010, 11:10 »

Пересобрал библиотеку статически, далее попробовал собрать свою программу которая изначально писалась и тестировалась в линуксе. компиляция и сборка прошла без ошибок но вот когда я ее запустил то увидел слегка не то, что ожилад - не отображаются картинки в формате sgv, загруженные в QLabel.
С динамической версией библиотеки все работает и в линуксе и в виндовсе.
Вот с какими ключами конфигурировалась библиотека
Код:
configure  -static -release -platform win32-g++ -no-exceptions -no-phonon -no-dbus -qt-sql-mysql -I C:\mysql\include  -L C:\mysql\lib\opt -l mysql -prefix c:\Qt\static -nomake examples -nomake demos
исходники библиотеки установленны в c:\Qt\4.6.2
картинки других типов отображаются (проверял png, работает), но переделывать из svg в другой формат сейчас придется очень много да и не совсем это удобно будет.
простенький примерчик, илюстрирующий сказаное во вложении
по этому адресу (~3,5Мб) он-же собранный
сама библиотека выложена здесь (~200Мб)
Записан
vanessa
Гость
« Ответ #1 : Май 05, 2010, 20:23 »

с утра пересобрал библиотеку но в место -static в параметрах вызова configure написал -shared остальное - без изменений. Так вот картинки svg отображаются.
Записан
Muaddib
Гость
« Ответ #2 : Май 06, 2010, 07:26 »

Столкнулся с подобной проблемой но только для jpg. Пришлось в коде подгружать плагин для поддержки jpg.
Код:
#include <QApplication>
#include <QtPlugin>

Q_IMPORT_PLUGIN(qjpeg)

int main(int argc, char *argv[]){
QApplication app(argc, argv);
     ...
В pro файле добавил
Код:
QTPLUGIN += qjpeg
CONFIG += static

Вся информация в ассистенте в разделе How to Create Qt Plugins

Записан
vanessa
Гость
« Ответ #3 : Май 06, 2010, 13:57 »

добавил
Код:
QTPLUGIN += qsvg
CONFIG += static
не помогло.
Записан
ufna
Гость
« Ответ #4 : Май 06, 2010, 14:35 »

Q_IMPORT_PLUGIN тоже сделал?
Записан
vanessa
Гость
« Ответ #5 : Май 06, 2010, 15:49 »

Q_IMPORT_PLUGIN тоже сделал?
Нет, а это как ?
Записан
ufna
Гость
« Ответ #6 : Май 06, 2010, 15:54 »

Выше тов. Muaddib код привел для gjpeg плагина.

в твоем случае нужно сделать

Код
C++ (Qt)
#include <QApplication>
#include <QtPlugin>
 
Q_IMPORT_PLUGIN(qsvg)
 
int main(int argc, char *argv[]){
QApplication app(argc, argv);
    ...
Записан
vanessa
Гость
« Ответ #7 : Май 06, 2010, 16:13 »

Спасибо, сработало.
Записан
vanessa
Гость
« Ответ #8 : Май 15, 2011, 21:27 »

Вернусь к своей старой теме поскольку получил смежную проблему. На этапе линковки получаю такое
Код:
e:/Qt/static/plugins/imageformats\libqsvg.a(qsvgiohandler.o):qsvgiohandler.cpp:(.text+0x69a): undefined reference to `QSvgRenderer::load(QByteArray const&)'

e:/Qt/static/plugins/imageformats\libqsvg.a(qsvgiohandler.o):qsvgiohandler.cpp:(.text+0x702): undefined reference to `QSvgRenderer::viewBox() const'

e:/Qt/static/plugins/imageformats\libqsvg.a(qsvgiohandler.o):qsvgiohandler.cpp:(.text+0x71c): undefined reference to `QSvgRenderer::viewBox() const'

e:/Qt/static/plugins/imageformats\libqsvg.a(qsvgiohandler.o):qsvgiohandler.cpp:(.text+0x789): undefined reference to `QSvgRenderer::load(QByteArray const&)'

e:/Qt/static/plugins/imageformats\libqsvg.a(qsvgiohandler.o):qsvgiohandler.cpp:(.text+0x7d1): undefined reference to `QSvgRenderer::load(QXmlStreamReader*)'

e:/Qt/static/plugins/imageformats\libqsvg.a(qsvgiohandler.o):qsvgiohandler.cpp:(.text+0xbeb): undefined reference to `QSvgRenderer::render(QPainter*, QRectF const&)'

если убрать из main.cpp 
Q_IMPORT_PLUGIN(qsvg)
программа собирается но svg картинки не отображаются..
PS верисия Qt 4.7.3
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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