我将gtk2.0程序与运行库打包放在没有gtk运行时环境的机器运行,发现gtk程序背景图片没有了,绘制背景的地方用到的是GdkPixbuf来储存图像的,用到了gdkpixbuf库。
控制台打印提示
GdkPixbuf-WARNING **: Cannot open pixbuf loader module file 'C:\xx\etc\gtk-2.0\gdk-pixbuf.loaders': No such file or directory
查找gtk库,确实有\etc\gtk-2.0\gdk-pixbuf.loaders文件,把他的目录结构拷贝到程序运行目录。运行之后发现还是不能显示图片,控制台没有提示
检查gdk-pixbuf.loaders文件。里面有加载的dll文件路径,指定了每种类型的文件调用的dll。
"c:/devel/target/5e32e6f9bd779a13110a7c6ff9016d6e/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-gif.dll"
"gif" 4 "gtk20" "The GIF image format" "LGPL"
"image/gif" ""
"gif" ""
"GIF8" "" 100
查找gtk库确实有/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-gif.dll这样的文件,直接把loaders文件夹按照目录结构拷贝到程序运行目录下,就显示正常图片了。
所以用到gdkpixbuf的gtk程序,在没有gtk运行时环境的情况下,还需要拷贝下面的内容到程度目录里面:
├─etc
│ └─gtk-2.0
│ gdk-pixbuf.loaders
│
└─lib
└─gtk-2.0
└─2.10.0
└─loaders
libpixbufloader-ani.dll
libpixbufloader-bmp.dll
libpixbufloader-gif.dll
libpixbufloader-icns.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