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

pas*_*pkT 3 c windows gtk cross-platform gtk3

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

我按照本指南设置了编译器,程序编译成功,并在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
Run Code Online (Sandbox Code Playgroud)

问题:是否可以在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>
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的事情:将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
Run Code Online (Sandbox Code Playgroud)

如果edit-find-symbolic.svg此文件夹中不存在,但存在名为的文件夹hicolor,则图标仍然不起作用,这次终端中根本没有任何输出.

The*_*rev 7

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

默认主题(adwaita)的SVG图标需要被复制到相对于bin目录bin的共享目录../ share/icons/Adwaita/scalable/*bin bin ../ share/icons/Adwaita/icon-theme.缓存和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
Run Code Online (Sandbox Code Playgroud)

这个loaders.cache文件的第一行也需要编辑为"../lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll"

文件树如下所示:

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
Run Code Online (Sandbox Code Playgroud)

示例应用程序:https://github.com/odrevet/gtk-sample-app