Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: vanessa от Май 05, 2010, 11:10



Название: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: 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Мб) (http://www.vanessa.org.ua/files/test2.zip) он-же собранный
сама библиотека выложена здесь (~200Мб) (http://www.vanessa.org.ua/files/static.zip)


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: vanessa от Май 05, 2010, 20:23
с утра пересобрал библиотеку но в место -static в параметрах вызова configure написал -shared остальное - без изменений. Так вот картинки svg отображаются.


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: Muaddib от Май 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



Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: vanessa от Май 06, 2010, 13:57
добавил
Код:
QTPLUGIN += qsvg
CONFIG += static
не помогло.


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: ufna от Май 06, 2010, 14:35
Q_IMPORT_PLUGIN тоже сделал?


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: vanessa от Май 06, 2010, 15:49
Q_IMPORT_PLUGIN тоже сделал?
Нет, а это как ?


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: ufna от Май 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);
    ...


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: vanessa от Май 06, 2010, 16:13
Спасибо, сработало.


Название: Re: Проблема отображения картинки svg при статической сборке библиотеки (windows)
Отправлено: vanessa от Май 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