如何使用静态编译处理GTK中的FileChooser

问题描述 投票:0回答:2

我必须创建一个文件(.exe)程序。在该程序中,用户可以从他的计算机中选择目录。

我按照http://www.tarnyko.net/en/?q=node/31的顺序创建程序,运行良好。

但是当我调用FileChoser(点击按钮)时,我收到了这个错误

GLib-GIO-ERROR No GSettings schemas are installed on the system

Tarnaka对此问题的回应是在网页上发表评论 - 这是静态编译的“bug”。

我该如何解决这个问题?

一方面我必须有一个文件。另一方面,我真的不想自己创建“复杂的”FileChooser ......有没有选择来处理这个问题?

我的想法:1 - 调用操作系统的原生文件选择器(windows)2 - 自己创建文件选择器 - 如果它在gtk中不是“太难”

我不知道怎么做这两件事。

对不起复制 - 可能成功的解决方案是答案形式“ebassi”这里GLib-GIO-ERROR**: No GSettings schemas are installed on the system(尚未测试)

c static gtk filechooser
2个回答
1
投票

设置模式(在GTK中使用的地方而不仅仅是文件选择器小部件)不能静态链接到二进制文件中:它们必须安装在一个众所周知的位置(可通过$XDG_DATA_DIRS环境变量控制)并且必须编译它们进入缓存。

GTK的依赖性如Pango和GDK-Pixbuf也使用辅助文件和可加载模块,这些模块与静态链接不是严格兼容的(除非你愿意花时间)。

仅为应用程序提供单个可执行文件的通常建议是使用自解压安装程序,其中包含运行GTK应用程序所需的所有已安装文件,并避免静态链接。


0
投票

我不认为用GTK +创建一个.exe文件(没有任何其他文件)是可能的。也许只有当你重新编写GTK及其依赖时 - 这不是一件容易的事。

我找到的最佳解决方案是将所有模式(以及GTK +应用程序的图标)放在放置.exe文件的同一位置:

EXE_LOCATION\program.exe

// For icons:
EXE_LOCATION\share\icons\hicolor...

// For schemas
EXE_LOCATION\share\glib-2.0\schemas

然后将这些文件与.exe文件以及所有需要的.dll文件一起提供。

关于GTK +中的本机文件选择器:它还需要模式 - 至少在Windows操作系统上。

© www.soinside.com 2019 - 2024. All rights reserved.