2016-05-16 99 views
0

我必须创建一个文件(.exe)程序。 在这个程序中,用户可以从他的电脑中选择目录。如何在静态编译中处理GTK中的FileChooser

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

但是当我调用FileChoser(点击按钮)我得到这个错误Tarnyko的这个问题

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

反应是COMENT网页上 - 这被称为“错误”与静态编译。

我该如何解决这个问题?

一方面我必须有one-file.exe。 另一方面,我真的不想创建“复杂”的FileChooser在我自己...有没有任何选项来处理这个?

我的想法: 1 - 调用操作系统的本机文件选择(窗口) 2 - 我自己创建文件选择器 - 如果不是“多难”的GTK

我不知道该怎么办这一点。

对不起复制 - 可能更迭的解决方案是在回答形式“ebassi”这里GLib-GIO-ERROR**: No GSettings schemas are installed on the system(没有测试过)

+0

[这是谷歌可以为你做的事](https://www.google.it/search?q=GLib-GIO-ERROR+No+GSettings+schemas+are+installed+on+the+system&oq= GLib-GIO-ERROR + No + GSettings + schemas +在+系统+ aqs = chrome..69i57j0l5.415j0j7&sourceid = chrome&es_sm = 122&ie = UTF-8上+ +被安装+) – LPs

+0

显式不支持静态编译GTK +,所以任何“bug “你看到的是使用不受支持的配置的结果。话虽如此,重新编译你的静态GLib让GSettings不要在文件系统上寻找模式或其他东西。我不确定这是否可能...您可能还需要重新编译GTK +以将其架构作为.a文件的一部分嵌入。 – andlabs

+0

@andlabs,你介意提供一个明确不支持的来源吗?不是因为我认为你错了,但我对这个理由很好奇。 – Blake

回答

1

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

像Pango和GDK-Pixbuf一样,GTK的依赖关系也使用辅助文件和可加载模块,这些模块与静态链接不完全兼容(除非您愿意花时间在其上)。

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