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,则图标仍然不起作用,这次终端中根本没有任何输出.
这是一个迟到的回复,但我遇到了这个问题,我已通过以下步骤解决了这个问题:
默认主题(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