LINUX.ORG.RU

[Windows][GTK+] Image


0

0

Пытаюсь загрузить картинку при помощи gtk_image_new_from_file(). Сборка проходит без ошибок и помарок, при запуске приложение выдает: Cannot open pixbuf loader module file '«путь до приложения»\etc\gtk-2.0\gdk-pixbuf.loaders': No such file or directory. Соответственно вместо желаемой картинки - стандартная broken image. Что делать?

Интересный какой путь, в мастдае-то:

\etc\gtk-2.0\gdk-pixbuf.loaders

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Я сам в шоке был, но понять что же он от меня хочет, вернее куда положить то, что он от меня хочет я так и не придумал %) Видать где-то нужно прописать пути, но где и куда так и не нашел %)

Sklorin ()

Похоже где-то на этапе сборки библиотеки захардкоден путь /etc/gtk-2.0/gdk-pixbuf.loaders, на этапе выполнения этот путь конвертируется в родной для системы - с обратными слешами и потом ищется файл по нему. И поскольку в начале не обнаруживается «Диск:», считается, что это путь относительно текущей директории.

Я как правило в таких случаях роюсь в исходниках и отсылаю багрепорт (-:

Dendy ★★★★★ ()

Загрузка изображений делается плагинами (loaders). Пути к ним находятся в файле gdk-pixbuf.loaders. Нужен этот файл, плагины и правильные пути к ним.

k_andy ★★★ ()
Ответ на: комментарий от k_andy

Уже тоже пришел к этому, впорос такой, в каком формате под виндой должны быть эти плагины? PS файл gdk-pixbuf.loaders создается командой gdk-pixbuf-query-loaders > «путь к папке»/etc/gtk-2.0/gdk-pixbuf.loaders

Sklorin ()
Ответ на: комментарий от Sklorin

Нашел файлы: libpixbufloader-jpeg.dll libpixbufloader-png.dll После создания .loaders файла ошибки при выполнении программы не возникает, однако конечный результат тот же, broken image - на том же месте :( Использование команды image = gtk_image_new_from_pixbuf(name) не позволяет отслеживать ошибки при загрузке, заменил на pixBuf = gdk_pixbuf_new_from_file(name, NULL), а картинку загружаю уже из pixBuf. В результате выполнения предыдущей команды pixBuf == NULL, вопрос, что ему еще от меня нужно? %)

Sklorin ()
Ответ на: комментарий от Sklorin

у меня в эти плагины лежат в

<корень программы>\lib\gtk-2.0\loaders\

в

<корень программы>\etc\gtk-2.0\gdk-pixbuf.loaders

вот такие пути

«c:/devel/target/24657c578dad0b54d4855b1780ade31a/lib/gtk-2.0/loaders/libpixbufloader-ani.dll»

Эти пути отличаются от тех, что в оригинальном gtk-bundle. Там есть ещё промежуточная директория «2.10.0».

Сама программа и dll-ки лежат в корне.

k_andy ★★★ ()
Ответ на: комментарий от k_andy

Спасибо, но какие именно нужны плагины? :) Это они? libpixbufloader-jpeg.dll libpixbufloader-png.dll

Sklorin ()
Ответ на: комментарий от Sklorin

Вот упрощеный пример программы: #include <gtk/gtk.h> GtkWidget *image; GtkWidget *vbox; GtkWidget *window; int main(int argc, char *argv[]) {gtk_set_locale (); gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_usize (GTK_WIDGET (window), 600, 500); gtk_window_set_title (GTK_WINDOW (window), «Skorin»); gtk_signal_connect (GTK_OBJECT (window), «delete_event», (GtkSignalFunc) gtk_main_quit, NULL); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), vbox); gtk_widget_show (vbox); image = gtk_image_new_from_file(«Rubashka.png»); gtk_container_add (GTK_CONTAINER (vbox), image); gtk_widget_show (image); gtk_widget_show (window); gtk_main(); }

в корне программы лежат 2 ddl: libpixbufloader-jpeg.dll и libpixbufloader-ani.dll. lib и ect папки созданы и заполнены (не факт что тем чем надо :)). Заранее спасибо если поможете разгрести что не так %)

Sklorin ()
Ответ на: комментарий от Sklorin

У меня этот пример работает нормально.

│ a.exe
│ Rubashka.png
│ freetype6.dll
│ iconv.dll
│ intl.dll
│ libcairo-2.dll
│ libcroco-0.6-3.dll
│ libexpat-1.dll
│ libfontconfig-1.dll
│ libgdk_pixbuf-2.0-0.dll
│ libgio-2.0-0.dll
│ libglib-2.0-0.dll
│ libgmodule-2.0-0.dll
│ libgobject-2.0-0.dll
│ libgsf-1-114.dll
│ libgsf-win32-1-114.dll
│ libgthread-2.0-0.dll
│ libidn-11.dll
│ libjpeg-7.dll
│ libpango-1.0-0.dll
│ libpangocairo-1.0-0.dll
│ libpangoft2-1.0-0.dll
│ libpangowin32-1.0-0.dll
│ libpng12-0.dll
│ librsvg-2-2.dll
│ libtiff-3.dll
│ libxml2-2.dll
│ zlib1.dll

├───etc
│ ├───gtk-2.0
│ │ gdk-pixbuf.loaders
│ │
│ └───pango
│ pango.modules

└───lib
└───gtk-2.0
└───loaders
libpixbufloader-ani.dll
libpixbufloader-bmp.dll
libpixbufloader-gif.dll
libpixbufloader-ico.dll
libpixbufloader-jpeg.dll
libpixbufloader-pcx.dll
libpixbufloader-png.dll
libpixbufloader-pnm.dll
libpixbufloader-ras.dll
libpixbufloader-tga.dll
libpixbufloader-tiff.dll
libpixbufloader-wbmp.dll
libpixbufloader-xbm.dll
libpixbufloader-xpm.dll

k_andy ★★★ ()
Ответ на: комментарий от k_andy

Если не затруднит - упокуй это в архив и выложи куда-нибудь, а потом дай ссылку, заранее спасибо :)

Sklorin ()
Ответ на: комментарий от k_andy

Спасибо огромное, работает и у меня теперь, видимо не стыковались версии dll

Sklorin ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.