在MS Windows中运行时,Gtk +图标丢失

时间:2014-11-04 14:45:46

标签: c windows gtk cross-platform gtk3

我在Ubuntu上开发了一个C / GTK +应用程序,我想交叉编译它以便在MS Windows上运行。

我跟着this guide设置了编译器,程序编译成功,并在MS Windows上运行。

但是,搜索条目上的图标丢失了。

这是我在Ubuntu上获得的内容:

enter image description here

这是我在MS Windows(或Wine)中运行程序时得到的结果:

enter image description here

此外,终端显示以下内容:

(main.exe:8): Gtk-WARNING **: Could not find the icon 'edit-find-symbolic'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
    http://icon-theme.freedesktop.org/releases

问题:是否可以在Windows中显示图标,而无需在Windows框中安装任何内容?我的应用程序旨在能够从USB闪存驱动器运行而无需安装任何东西。

我用来创建应用程序的Glade文件的相关部分,以防它有用:

          <object class="GtkSearchEntry" id="searchentry1">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="primary_icon_name">edit-find-symbolic</property>
            <property name="primary_icon_activatable">False</property>
            <property name="primary_icon_sensitive">False</property>
          </object>

我迄今为止尝试过的事情:将edit-find-symbolic.svg复制到包含main.exe的目录(即与dll一起);在那里复制整个目录/usr/share/icons/gnome。这些都不起作用。


更新

在包含main.exe的目录中,我添加了一个子目录share,并在其中添加了另一个子目录icons。我将edit-find-symbolic.svg放在这个子目录中。搜索图标看起来仍然相同(不起作用),但这次终端输出不同:

(main.exe:8): GLib-GIO-CRITICAL **: g_loadable_icon_load: assertion `G_IS_LOADABLE_ICON (icon)' failed

如果此文件夹中不存在edit-find-symbolic.svg,但存在名为hicolor的文件夹,则该图标仍然无法正常工作,而这次没有任何输出终端。

2 个答案:

答案 0 :(得分:7)

这是一个迟到的回复,但我遇到了这个问题,我已经通过以下步骤解决了这个问题:

默认主题(adwaita)的SVG图标需要被复制到相对于bin目录bin的共享目录../ share / icons / Adwaita / scalable / * bin bin ../ share / icons / Adwaita / icon -theme.cache和bin ../ share / icons / Adwaita / index.theme

经过多次测试后,似乎还需要以下文件:

lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll
lib/gdk-pixbuf-2.0/2.10.0/loaders/loaders.cache

此loaders.cache文件的第一行也需要编辑为&#34; ../ lib / gdk-pixbuf-2.0 / 2.10.0 / loaders / libpixbufloader-svg.dll&#34;

文件树如下所示:

bin/gtkapplication.exe
bin/*.dll
share/loader.cache
share/glib-2.0/gschemas.compiled
share/icons/Adwaita/scalable/*
share/icons/Adwaita/icon-theme.cache
share/icons/Adwaita/index.theme
lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll
lib/gdk-pixbuf-2.0/2.10.0/loaders/loaders.cache

包含适用于Windows的GTK + 3运行时文件的最新存储库(截至5-23-2019): https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer

答案 1 :(得分:0)

作为一种解决方法,我已将图标从svg转换为png,然后将它们放在share/icons中。现在显示图标,但存在一个小问题:当搜索条目为空时,右边会有一个额外的放大镜图标。

enter image description here

额外的放大镜将由&#34; clear&#34;如果条目中有文字,那么我就不会认为这是一个很大的问题......(虽然这看起来很奇怪......)

由于这只是一种解决方法,而不是一个完美的解决方案,我不会将此标记为已接受的答案。我认为这个问题可能与svg文件的显示方式有关,但是我有here的所有DLL,所以我真的不明白这个问题是什么。