Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Script. Интеграция WebKit _ Картинки не отображаются

Автор: PassiveX 9.2.2009, 19:24

Имею программу, которая пользует webkit. Появилась проблема, что он некоторые типа картинок не отображает на компах, где я не веду разработку.
А веду разработку под Маком и Вендой. Под макос получилось скомпилить qt статически, и прога потом на других маках свободно бегала и все картинки на инет-страницах грузила и показывала. Под виндовс скомпилить как надо ни разу не получилось, постоянные ошибки, устал вытирать пот, поэтому таскаю за собой dll-ки. Но программка моя упорно не хочет показывать gif (заменяет фирменным webkit-овскими вопросами).

Пробовал addLibraryPath натравить на папку с imageformats, клал её в папку с ехе-шником, делал на тестовых компах папку c:\qt\4.4.3\plugins и копировал туда всю папку imageformats и папки plugins, ничего не помогает.

Скажите, я хотя бы на правильном пути?
WinXP, Qt 4.4.3

Автор: Litkevich Yuriy 9.2.2009, 19:34

Цитата(PassiveX @ 9.2.2009, 22:24) *
Пробовал addLibraryPath натравить на папку с imageformats, клал её в папку с ехе-шником, делал на тестовых компах папку c:\qt\4.4.3\plugins и копировал туда всю папку imageformats и папки plugins, ничего не помогает.
по этому поводу (динамическая сборка) читай в теме FAQ (что в верху подфорума) "развертывание приложений Qt в MS Windows"



Цитата(PassiveX @ 9.2.2009, 22:24) *
Появилась проблема, что он некоторые типа картинок не отображает на компах, где я не веду разработку.
Цитата(PassiveX @ 9.2.2009, 22:24) *
Под виндовс скомпилить как надо ни разу не получилось,
есть проблема со статической сборкой именно с картинками. Как я понял только с имеющими не свободную лицензию. Вроде в 4.5. ее должны были исправить

Автор: kwisp 10.2.2009, 13:37

получается хоть собрано и динамически все равно не отображает гиф.....

а в примерах-демонстрациях браузер у тебя под виндой гиф показывает???

Автор: PassiveX 10.2.2009, 17:23

Я дополню свой вопрос, потому что я в нём успел за сутки немного продвинуться

Во-первых я уточню, что собрать-то статически Qt получается при определённых параметрах configure.exe. Проблема в другом, линковщик не может слинковать прогу с библиотекой webkit'а, ругаясь в консоли про undefined reference на страшные наборы букв, в которых есть знакомые (типа webframe, webpage). Я понимаю, если бы он ругался в случае отсутствия статично-откомпиленной библиотеки, а вебкит скомпилился без ошибок.

Во-вторых, к вопросу основной темы.
Системные переменные оказались не причем, ровно как и реестр. Ровно как и вся папка Qt на диске С!
Я рвал от злости на себе волосы, когда вдруг понял причину непоказа картинок. Да, это зависимость на plugins/imageformats. Только ради экономии времени я подменял ехе-шник на сетевых шарах, а не копировал новый билд на соседний компьютер. Запускал прям из сети, что в таких случаях почему-то вело к неуспеху.
Но проблема до конца не решилась.

Дело в том, что картинки в браузере показываются только в debug-версии программы. Такому неоконченному успеху поспособствовал файл qt.conf в папке с программой, который я создал всего из двух строк:
[Paths]
#Prefix=C:\\Qt\\4.4.3

Не случайно закомментил последнюю строку, так как только так QLibraryInfo::PrefixPath становится равным директории, из которой программа запускается, и тогда плагины для просмотра графики подгружаются. Если файл не создавать, то QLibraryInfo::PrefixPath указывает на до боли знакомую папку C:\iwmake\build_mingw_opensource, которую я само собой не создавал

Чую жопой, что эта папка волшебная, по ходу разработчики Qt в ней что-то творят. Помнится, год назад с ней были проблемы при компиляции одного проекта.

Таким образом, выдавая информацию об QLibraryInfo::location(QLibraryInfo::PrefixPath), QLibraryInfo::location(QLibraryInfo::PluginsPath), а также QCoreApplication::applicationDirPath () для приличия, получается тотальное идиотство. Все пути совпадают с папками, в которых лежит прога и папка plugins с копированным содержимым imageformats внутри. Только debug-версия картинки показывает, а release - нет!

Предчувствуя вопросы, повторюсь, что да, в папке imageformats лежат как dll'ки для дебуга, так и для релиза.

Товрищи, сил моих больше нет. Давайте дифдиагнозом что ли эту тварь придушим?

Цитата(Litkevich Yuriy @ 9.2.2009, 19:34) *
есть проблема со статической сборкой именно с картинками. Как я понял только с имеющими не свободную лицензию. Вроде в 4.5. ее должны были исправить


Юрий, буду благодарен куску текста от официального источника, где это будет написано. А то наш одмин твердит то же самое, сам не напрограммировав и пары строчек кода в своей жизни, а сам я на сайте Qt тоже ничего не увидел.
Повторюсь, что WebKit скомпилить мне удалось, проблема в линковке была. А вообще эта тема про картинки. Уж они-то слабо должны быть связаны с LGPL :)

Цитата(kwisp @ 10.2.2009, 13:37) *
а в примерах-демонстрациях браузер у тебя под виндой гиф показывает???


да, проблемы не существует на компьютерах, где установлен Qt. Проблема в распространении программы, раз у меня статически ничего линковаться не хочется, то надо таскать за собой dll'ки, среди которых плагины чтения картинок не подгружаются

Автор: Litkevich Yuriy 10.2.2009, 17:44

Цитата(PassiveX @ 10.2.2009, 20:23) *
Юрий, буду благодарен куску текста от официального источника, где это будет написано.
надо искать на прогорге, там один из трольтеховцев (русскоговорящий) это дело подтверждал. А может и на трэкере тролей есть

Автор: kwisp 10.2.2009, 17:55

Цитата
Проблема в другом, линковщик не может слинковать прогу с библиотекой webkit'а, ругаясь в консоли про undefined reference на страшные наборы букв, в которых есть знакомые (типа webframe, webpage). Я понимаю, если бы он ругался в случае отсутствия статично-откомпиленной библиотеки, а вебкит скомпилился без ошибок


что то подобное происходит если в файл проекта не добавишь
QT+=webkit

как впрочем и другие модули хмл скл и т.д

попозже обещаю попробовать собрать проект с вебкит статически у меня он тоже в проге есть...
пока со временем туго...

Автор: Litkevich Yuriy 10.2.2009, 18:00

Цитата(PassiveX @ 10.2.2009, 20:23) *
то надо таскать за собой dll'ки, среди которых плагины чтения картинок не подгружаются
ты прочитал, то что я давал по поводу динамической сборки в сообщении №2

Автор: kwisp 10.2.2009, 18:03

Цитата
Проблема в распространении программы, раз у меня статически ничего линковаться не хочется, то надо таскать за собой dll'ки, среди которых плагины чтения картинок не подгружаются


странно.... у меня 4.4.3 динамически собранный проект c WebKit прекрасно все на других машинах(без установленного Qt) отображает.


я собирал

configure -release -platform win32-g++ -no-vcproj -webkit -assistant-webkit

Автор: Константин 10.2.2009, 18:06

Цитата(Litkevich Yuriy @ 10.2.2009, 17:44) *
надо искать на прогорге, там один из трольтеховцев (русскоговорящий) это дело подтверждал. А может и на трэкере тролей есть

Цитата
>> [qt 4.4.1] Нет иконок в print preview в static версии
>> Делаю print preview в Windows, иконок верхней панели нет, только кнопочки. В Linux в shared версии все good.

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

больше в том треде ничего, собственно, нет по теме.

в данном же слечае проблема иная (раз уж даже с плагинами не хочет заводиться)
Цитата(PassiveX @ 10.2.2009, 17:23) *
Чую жопой, что эта папка волшебная <snip>

папка не волшебная. видимо, в неё устанавливали (или собирали в ней) кутэ для последующей упаковки.

я бы посоветовал скачать тарболл с исходниками (qt-all-*-x.y.z) и собрать начисто без последующей установки, а затем обновить бинарники на тестовых машинах. также можно поубивать software\trolltech в реестрах - чтобы уж наверняка.

Автор: kwisp 10.2.2009, 18:15

Цитата
в static версии

а человек пишет
Цитата
.... то надо таскать за собой dll'ки, среди которых плагины чтения картинок не подгружаются


получается проблема родтвенная но не точно такая же.

Автор: PassiveX 10.2.2009, 18:18

Цитата(Litkevich Yuriy @ 10.2.2009, 18:00) *
ты прочитал, то что я давал по поводу динамической сборки в сообщении №2


Да, конечно, не помогает всё равно
Пути ставит правильные, все плагины я разместил по своим местам
Проблема не изменилась, дебуг картинки кажет, релиз нет :(

Автор: Litkevich Yuriy 10.2.2009, 18:28

Цитата(PassiveX @ 10.2.2009, 21:18) *
дебуг картинки кажет, релиз нет
это и в любом стандартном примере так?
яб навсякий случай почистил кэш плагинов, как говорил Константин.
либо эту подветку прибил: HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults
либо всю HKEY_CURRENT_USER\Software\Trolltech

Автор: PassiveX 10.2.2009, 18:29

Цитата(kwisp @ 10.2.2009, 17:55) *
что то подобное происходит если в файл проекта не добавишь
QT+=webkit


добавлен первым делом
хотя да, подмечено верно

плюс .pro-файл у меня один для двух платформ (я под маком тоже разрабатываю прогу), и под маком всё статически собралось легко

Автор: kwisp 10.2.2009, 18:40

Цитата
webkit'а, ругаясь в консоли про undefined reference на страшные наборы букв, в которых есть знакомые (типа webframe, webpage).


пардон за назойливость.
и в мэйкфайле релизовском библитека webkit конечно добавлена....

Автор: PassiveX 10.2.2009, 18:50

Цитата(kwisp @ 10.2.2009, 18:40) *
пардон за назойливость.
и в мэйкфайле релизовском библитека webkit конечно добавлена....


DEFINES = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_STATICPLUGIN -DQT_PLUGIN -DQT_WEBKIT_LIB -DQT_SVG_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
CFLAGS = -O2 -w $(DEFINES)
CXXFLAGS = -O2 -w -frtti -fexceptions -mthreads $(DEFINES)
INCPATH = -I'c:/Qt/4.4.3/include/QtUiTools' -I'c:/Qt/4.4.3/include/QtCore' -I'c:/Qt/4.4.3/include/QtCore' -I'c:/Qt/4.4.3/include/QtNetwork' -I'c:/Qt/4.4.3/include/QtNetwork' -I'c:/Qt/4.4.3/include/QtGui' -I'c:/Qt/4.4.3/include/QtGui' -I'c:/Qt/4.4.3/include/QtXml' -I'c:/Qt/4.4.3/include/QtXml' -I'c:/Qt/4.4.3/include/QtSvg' -I'c:/Qt/4.4.3/include/QtSvg' -I'c:/Qt/4.4.3/include/QtWebKit' -I'c:/Qt/4.4.3/include/QtWebKit' -I'c:/Qt/4.4.3/include' -I'c:/Qt/4.4.3/include/ActiveQt' -I'release' -I'.' -I'c:/Qt/4.4.3/mkspecs/win32-g++'
LINK = g++
LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-subsystem,windows -mthreads -Wl -Wl,--out-implib,release/libR-broker.a
LIBS = -L'c:/Qt/4.4.3/lib' -lmingw32 -lqtmain release/icon_res.o -lQtWebKit -lQtSvg -lQtUiTools -lQtNetwork -lQtXml -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32

это?

Автор: kwisp 10.2.2009, 19:11

у меня иначе выглядит хотя версия таже

-lQtWebKit4
:blink:

почему разница интересно.

Автор: PassiveX 10.2.2009, 19:20

Цитата(kwisp @ 10.2.2009, 19:11) *
у меня иначе выглядит хотя версия таже

-lQtWebKit4
:blink:


так это я по ходу вариант для статичной борки копирнул, там цифры не нужны

я в данный момент пытаюсь собрать browser из demos чтобы точно убедиться, что проблема не в моём проекте, так что чуть позже копирну другой вариант

Автор: kwisp 10.2.2009, 19:22

Цитата(PassiveX @ 10.2.2009, 19:20) *
я в данный момент пытаюсь собрать browser из demos чтобы точно убедиться, что проблема не в моём проекте, так что чуть позже копирну другой вариант


ты же говорил проблем нет на машинах где стоит библиотека со стандартным примером.???

Автор: PassiveX 10.2.2009, 19:34

Цитата(kwisp @ 10.2.2009, 19:22) *
мером.???


неее, прошу прощения, неточно выразился
проблем нет с картинками на компах, где установлен Qt

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

Вот и вести с полей подоспели
В очередной раз скомпилить прогу не получилось. На сей раз из состава Кьюта. Browser из папки demos ругается так же, как и всё остальное
Цитата
./tmp/obj/release_static/history.o(.text+0xc8e3):history.cpp: undefined reference to `_imp___ZN20QWebHistoryInterfaceD2Ev'
./tmp/obj/release_static/history.o(.text+0xc98d):history.cpp: undefined reference to `_imp___ZN20QWebHistoryInterfaceC2EP7QObject'
./tmp/obj/release_static/history.o(.text+0xcb94):history.cpp: undefined reference to `_imp___ZN20QWebHistoryInterface19setDefaultInterfaceEPS_'
./tmp/obj/release_static/history.o(.text+0xcc53):history.cpp: undefined reference to `_imp___ZN20QWebHistoryInterfaceD2Ev'
./tmp/obj/release_static/settings.o(.text+0x65):settings.cpp: undefined reference to `_imp___ZN12QWebSettings14globalSettingsEv'
./tmp/obj/release_static/settings.o(.text+0x87):settings.cpp: undefined reference to `_imp___ZNK12QWebSettings10fontFamilyENS_10FontFamilyE'
./tmp/obj/release_static/settings.o(.text+0x98):settings.cpp: undefined reference to `_imp___ZNK12QWebSettings8fontSizeENS_8FontSizeE'
./tmp/obj/release_static/settings.o(.text+0x2de):settings.cpp: undefined reference to `_imp___ZNK12QWebSettings10fontFamilyENS_10FontFamilyE'
./tmp/obj/release_static/settings.o(.text+0x305):settings.cpp: undefined reference to `_imp___ZNK12QWebSettings8fontSizeENS_8FontSizeE'
./tmp/obj/release_static/settings.o(.text+0x5bd):settings.cpp: undefined reference to `_imp___ZNK12QWebSettings13testAttributeENS_12WebAttributeE'
./tmp/obj/release_static/settings.o(.text+0x5f2):settings.cpp: undefined reference to `_imp___ZNK12QWebSettings13testAttributeENS_12WebAttributeE'
./tmp/obj/release_static/tabwidget.o(.text+0xf4e):tabwidget.cpp: undefined reference to `_imp___ZNK8QWebPage6actionENS_9WebActionE'
./tmp/obj/release_static/tabwidget.o(.text+0xfa7):tabwidget.cpp: undefined reference to `_imp___ZNK8QWebPage6actionENS_9WebActionE'
./tmp/obj/release_static/tabwidget.o(.text+0x261a):tabwidget.cpp: undefined reference to `_imp___ZN8QWebView6reloadEv'
./tmp/obj/release_static/tabwidget.o(.text+0x267b):tabwidget.cpp: undefined reference to `_imp___ZN8QWebView6reloadEv'
./tmp/obj/release_static/tabwidget.o(.text+0x58d3):tabwidget.cpp: undefined reference to `_imp___ZNK8QWebView4pageEv'


Хотя статика webkit'а скомпилена и лежит себе в qt/lib/libQtWebKit.a

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)