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

时间:2016-05-16 15:38:50

标签: c static gtk filechooser

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

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

但是当我调用FileChoser(点击按钮)时出现了这个错误

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

Tarnyko对此问题的回应是在网页上发布的 - 这是已知的" bug"静态编译。

我该如何解决这个问题?

一方面我必须拥有one-file.exe。 另一方面,我真的不想创造"复杂" FileChooser我自己......有没有选择来解决这个问题?

我的想法:     1 - 调用OS的本机文件选择器(windows)     2 - 自己创建文件选择器 - 如果不是"很难"在gtk

我不知道如何做到这一点。

很抱歉重复 - 可能成功的解决方案是答案形式" ebassi"这里GLib-GIO-ERROR**: No GSettings schemas are installed on the system(尚未测试)

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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 OS上。