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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование плагина Gif для Мак ОСХ/(Linux?)  (Прочитано 6529 раз)
Fonarix
Гость
« : Июнь 14, 2007, 20:17 »

Всем привет!!!

Возникла проблема с Qt плагином gif.
Мне необходима аппликушка которая конвертит графические форматы файлов посредством Кт.
В общем под виндой все нормально работает, но подмаком нет.
Суть в том, что gif конвертер реализован в виде плагина.
Я так понял что под маком этот плагин libqgif.dylib не находится, так
как потратил порядочно времения для этого под виндовс, и на конец заработало!
Мак так же можно рассматримать как линукс, есть решения?
Читнул инфо тут, но как вы понимаете безнадежно )

http://doc.trolltech.com/4.3/deployment-mac.html#qt-plugins


Функция QApplication::libraryPaths () возвращает действительные пути,
где все необходимые либы есть:

libqgif_debug.dylib
libqgif.dylib
libqjpeg_debug.dylib
libqjpeg.dylib
libqmng_debug.dylib
libqmng.dylib
libqsvg_debug.dylib
libqsvg.dylib


Какие есть способы использования qt.conf и необходимо ли оно?

Спасибо!!!
Записан
AlexVR
Гость
« Ответ #1 : Июнь 14, 2007, 21:10 »

При переносе готовой программы на чистую Винду, у меня пропадали SVG-хи, помогло копирование папки imageformats из ...\qt\4.Х.Х\plugins\ в католог с exe-ой (Влом было тогда Qt перенастраивать). Может попробывать и тебе так же.

З.Ы.: К сожелению, Маки к которым я могу добраться слишком стары для Qt, да и вообще слишком стары. Так что если ответ делитантский, прошу не венить Улыбающийся
Записан
Fonarix
Гость
« Ответ #2 : Июнь 15, 2007, 12:16 »

Цитата: "AlexVR"
При переносе готовой программы на чистую Винду, у меня пропадали SVG-хи, помогло копирование папки imageformats из ...\qt\4.Х.Х\plugins\ в католог с exe-ой (Влом было тогда Qt перенастраивать). Может попробывать и тебе так же.

З.Ы.: К сожелению, Маки к которым я могу добраться слишком стары для Qt, да и вообще слишком стары. Так что если ответ делитантский, прошу не венить Улыбающийся


Понапихивал в этот бандл папок imageformats, просто файлов во все папки в бандле - фанарь! Не работает!  :cry:
Записан
yshurik
Гость
« Ответ #3 : Июнь 15, 2007, 15:39 »

Цитата: "Fonarix"
Цитата: "AlexVR"
При переносе готовой программы на чистую Винду, у меня пропадали SVG-хи, помогло копирование папки imageformats из ...\qt\4.Х.Х\plugins\ в католог с exe-ой (Влом было тогда Qt перенастраивать). Может попробывать и тебе так же.

З.Ы.: К сожелению, Маки к которым я могу добраться слишком стары для Qt, да и вообще слишком стары. Так что если ответ делитантский, прошу не венить Улыбающийся


Понапихивал в этот бандл папок imageformats, просто файлов во все папки в бандле - фанарь! Не работает!  :cry:


Возможно в main.cpp засунуть

#ifdef Q_WS_MAC
    QDir libDir( QCoreApplication::applicationDirPath() );
    libDir.cdUp();
    libDir.cd("plugins");
    QApplication::addLibraryPath( libDir.absolutePath() );
    libDir.cd("imageformats");
    QApplication::addLibraryPath( libDir.absolutePath() );
#endif


При distribution для плугинов надо делать тоже что-то вроде

                              install_name_tool -change QtCore.framework/Versions/4/QtCore \
                                                @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore \
                                                $(DESTDIR)MyApp.app/Contents/plugins/imageformats/libqjpeg.dylib; \
                              install_name_tool -change QtGui.framework/Versions/4/QtGui \
                                                @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui \
                                                $(DESTDIR)MyApp.app/Contents/plugins/imageformats/libqjpeg.dylib; \

Как и для frameworks
Записан
Fonarix
Гость
« Ответ #4 : Июнь 19, 2007, 10:42 »

Цитата: "yshurik"
Цитата: "Fonarix"
Цитата: "AlexVR"
При переносе готовой программы на чистую Винду, у меня пропадали SVG-хи, помогло копирование папки imageformats из ...\qt\4.Х.Х\plugins\ в католог с exe-ой (Влом было тогда Qt перенастраивать). Может попробывать и тебе так же.

З.Ы.: К сожелению, Маки к которым я могу добраться слишком стары для Qt, да и вообще слишком стары. Так что если ответ делитантский, прошу не венить Улыбающийся


Понапихивал в этот бандл папок imageformats, просто файлов во все папки в бандле - фанарь! Не работает!  :cry:


Возможно в main.cpp засунуть

#ifdef Q_WS_MAC
    QDir libDir( QCoreApplication::applicationDirPath() );
    libDir.cdUp();
    libDir.cd("plugins");
    QApplication::addLibraryPath( libDir.absolutePath() );
    libDir.cd("imageformats");
    QApplication::addLibraryPath( libDir.absolutePath() );
#endif


При distribution для плугинов надо делать тоже что-то вроде

                              install_name_tool -change QtCore.framework/Versions/4/QtCore \
                                                @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore \
                                                $(DESTDIR)MyApp.app/Contents/plugins/imageformats/libqjpeg.dylib; \
                              install_name_tool -change QtGui.framework/Versions/4/QtGui \
                                                @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui \
                                                $(DESTDIR)MyApp.app/Contents/plugins/imageformats/libqjpeg.dylib; \

Как и для frameworks


Попробывал не работает  :cry:

Еще, перед теми строками было вставленно следуещее,

 QApplication::addLibraryPath("/dev_/ImageConverter");
 QApplication::addLibraryPath(QLibraryInfo::location((QLibraryInfo::PluginsPath)));

причем, в каждом из путей находилась папка imageformats с либами.
До дистрибутивов еще далеко), так как еще даже в дебаге не удалось загрузить плагин.
Мне необходимо посредством QImage открыть GIF файл и просто сохранить его как BMP и др.


По поводу install_name_tool, зачем его использовать, как я пологаю, для динамической загрузки dylib? Я его использую при дистрибуции с динамическими библиотеками при статическом связывании.

Кстати для Qt так же нашел скрипт:
http://wiki.qtcentre.org/index.php?title=Mac_OSX_Deployment_Script
Для обычних тестовых приложений вроде работает. (Но не для плагинов).
Записан
yshurik
Гость
« Ответ #5 : Июнь 19, 2007, 11:45 »

Цитата: "Fonarix"
Цитата: "yshurik"
Цитата: "Fonarix"
Цитата: "AlexVR"
При переносе готовой программы на чистую Винду, у меня пропадали SVG-хи, помогло копирование папки imageformats из ...\qt\4.Х.Х\plugins\ в католог с exe-ой (Влом было тогда Qt перенастраивать). Может попробывать и тебе так же.

З.Ы.: К сожелению, Маки к которым я могу добраться слишком стары для Qt, да и вообще слишком стары. Так что если ответ делитантский, прошу не венить Улыбающийся


Понапихивал в этот бандл папок imageformats, просто файлов во все папки в бандле - фанарь! Не работает!  :cry:


Возможно в main.cpp засунуть

#ifdef Q_WS_MAC
    QDir libDir( QCoreApplication::applicationDirPath() );
    libDir.cdUp();
    libDir.cd("plugins");
    QApplication::addLibraryPath( libDir.absolutePath() );
    libDir.cd("imageformats");
    QApplication::addLibraryPath( libDir.absolutePath() );
#endif


При distribution для плугинов надо делать тоже что-то вроде

                              install_name_tool -change QtCore.framework/Versions/4/QtCore \
                                                @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore \
                                                $(DESTDIR)MyApp.app/Contents/plugins/imageformats/libqjpeg.dylib; \
                              install_name_tool -change QtGui.framework/Versions/4/QtGui \
                                                @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui \
                                                $(DESTDIR)MyApp.app/Contents/plugins/imageformats/libqjpeg.dylib; \

Как и для frameworks


Попробывал не работает  :cry:

Еще, перед теми строками было вставленно следуещее,

 QApplication::addLibraryPath("/dev_/ImageConverter");
 QApplication::addLibraryPath(QLibraryInfo::location((QLibraryInfo::PluginsPath)));

причем, в каждом из путей находилась папка imageformats с либами.
До дистрибутивов еще далеко), так как еще даже в дебаге не удалось загрузить плагин.
Мне необходимо посредством QImage открыть GIF файл и просто сохранить его как BMP и др.


По поводу install_name_tool, зачем его использовать, как я пологаю, для динамической загрузки dylib? Я его использую при дистрибуции с динамическими библиотеками при статическом связывании.

Кстати для Qt так же нашел скрипт:
http://wiki.qtcentre.org/index.php?title=Mac_OSX_Deployment_Script
Для обычних тестовых приложений вроде работает. (Но не для плагинов).


Должно работать. Советую проверить в qDebug() << QCoreApplication::libraryPaths ()

ps. install_name_tool нужен чтобы потом не на development машине при загрузки plugin искал qt библиотеки в @executable_path
Записан
Fonarix
Гость
« Ответ #6 : Июнь 21, 2007, 14:30 »

libraryPaths - возвращает пути с либами и там же папка imageformats, понапихивал ее везде...

Задумываюсь о том не подключить ли прямо сырец файл плагина в проект...  Веселый
Записан
yshurik
Гость
« Ответ #7 : Июнь 21, 2007, 15:24 »

Цитата: "Fonarix"
libraryPaths - возвращает пути с либами и там же папка imageformats, понапихивал ее везде...

Задумываюсь о том не подключить ли прямо сырец файл плагина в проект...  Веселый


А у вас случайно не статик сборка?
Как раз тогда плугины надо включать прямо в бинарник
Записан
goer
Гость
« Ответ #8 : Июнь 21, 2007, 15:44 »

Я правильно понимаю: Вы собрали кути под маком, в том числе собрали и плагины под маком. Запускаете свою прогу под маком и гифы не работают?

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

Папку imageformats нужно кидать в папку с бинарем проги, а не везде где только можно )
По своему опыту заметил что addLibraryPath() не работает.
Записан
Fonarix
Гость
« Ответ #9 : Июнь 21, 2007, 17:02 »

To yshurik:
    Сборка с использованием динамических библиотек.

  Сборки по вообще по началу небыло, так как по началу стоял пакет qt-mac-commercial-4.2.3.dmg, в нем не было Gif плагина и сырцов (во всяком случае я их не нашел...).
  Затем я все откомпилил из этого пакета qt-mac-commercial-src-4.2.3.tar.gz, и теперь пытаюсь решить проблему imageformats...
  Если addLibraryPath() не работает, libraryPaths() ворзвращает вполне корретные пути, которые я указывал?


  Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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