我在Ubuntu上开发了一个C / GTK +应用程序,我想交叉编译它以便在MS Windows上运行。
我跟着this guide设置了编译器,程序编译成功,并在MS Windows上运行。
但是,搜索条目上的图标丢失了。
这是我在Ubuntu上获得的内容:
这是我在MS Windows(或Wine)中运行程序时得到的结果:
此外,终端显示以下内容:
(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
的文件夹,则该图标仍然无法正常工作,而这次没有任何输出终端。
答案 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
中。现在显示图标,但存在一个小问题:当搜索条目为空时,右边会有一个额外的放大镜图标。
额外的放大镜将由&#34; clear&#34;如果条目中有文字,那么我就不会认为这是一个很大的问题......(虽然这看起来很奇怪......)
由于这只是一种解决方法,而不是一个完美的解决方案,我不会将此标记为已接受的答案。我认为这个问题可能与svg文件的显示方式有关,但是我有here的所有DLL,所以我真的不明白这个问题是什么。