Alexander Gromnitsky's Blog

gdk-pixbuf loaders from mingw

Latest update:

I was mildly rejoicing after a successful cross-compilation of a Linux gtk3 app to Windows, when a warning from a resulting .exe appeared:

Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/bullet-symbolic.svg. This may indicate that pixbuf loaders or the mime database could not be found.

To even get to this warning, one has to copy all the required dlls & icons (5007, in my case) to a directory structure (called installation folder) like so:

$ tree -L 3
.
├── bin
│   ├── app.exe
│   ├── libgdk-3-0.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
│   ├── libgtk-3-0.dll
│   ├── ...
├── lib
│   └── gdk-pixbuf-2.0
│       └── 2.10.0
└── share
    ├── glib-2.0
    │   └── schemas
    └── icons
        ├── Adwaita
        └── hicolor

Here, gdk-pixbuf dlls gave me all the grief, particularly

$ peldd lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll
libgdk_pixbuf-2.0-0.dll
libglib-2.0-0.dll
libgobject-2.0-0.dll
librsvg-2-2.dll
libxml2-2.dll

Without gdk-pixbuf libraries loaded you get the aforementioned warning, that drove me nuts, & subtle rendering glitches, like no visible GtkSpinner.

Turns out, all you need is to

  1. cd to the root of the installation folder;
  2. run gdk-pixbuf-query-loaders.exe --update-cache.

This generates correct loaders.cache file.


Tags: ойті
Authors: ag