【问题标题】:GLib-GIO-ERROR**: No GSettings schemas are installed on the systemGLib-GIO-ERROR**:系统上未安装 GSettings 模式
【发布时间】:2015-03-10 00:00:13
【问题描述】:

不幸的是,我使用的是 Windows (Windows7 x64)。 在 Code::Blocks 和 GTK+3.6.4 中使用 MinGW 编译器。 我从 glib 中手动编译了所有模式。


当我使用文件选择器对话框/颜色选择器时 - 没关系, 我收到以下错误: GLib-GIO-ERROR**: No GSettings schemas are installed on the system 程序终止。


我该怎么做才能解决这个问题?

【问题讨论】:

    标签: c gtk mingw gtk3


    【解决方案1】:

    GSettings 查看$XDG_DATA_DIR 环境变量指向的目录中的编译模式。您可以使用为您设置环境的启动器脚本,也可以依赖前缀,并将 gschemas.compiled 文件安装在 share/glib-2.0/schemas 目录中,其前缀与您的应用程序二进制文件相同,例如如果您有以下布局:

    YourApp/
      bin/
        YourApp.exe
      lib/
        libgtk3.dll
        libgobject.dll
        …
      share/
        …
        glib-2.0/
          schemas/
    

    确保gschemas.compiled 文件在YourApp/share/glib-2.0/schemas 下,并且org.gtk.Settings.FileChooser.gschema.xml 也在那里。

    【讨论】:

    • 我从来没有完全理解这个变量的含义。这个系统环境变量是否可以从高级系统设置中设置,名称为XDG_DATA_DIR,值为D:\apps\gtk\share\glib-2.0\schemas 另外我的目标是静态编译我的程序。
    • XDG_DATA_DIR 环境变量是以冒号分隔的目录列表,按优先级降序排列,用于计算文件的路径 — 请参阅:standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
    • 顺便说一句:GLib 和 GTK+ 不太喜欢静态编译,因为它们拥有或依赖于各种运行时可加载模块。您可以调整其中大多数的加载路径。但是,在这种情况下,加载文件与静态或动态链接无关。它是辅助文件的位置,您可以使用环境变量来处理可重定位性。
    • 可能听起来很无礼.. 但我看到你有足够的知识来提供帮助。您是否有空闲时间可以通过 Team Viewer 提供帮助。我会记住一个回报的青睐。 RETURN_SUCCESS
    • +1。这为我修复了它,并且可能回答了这个问题,尽管它没有被标记为这样(并且已经出轨了)。
    【解决方案2】:

    问题在于 Glib 架构显然没有在您的系统上编译。

    您需要glib-compile-schemas 并找到位于/usr/share/glib-2.0/schemas 中的glib-2.0/schemas 目录,我不知道它是否会在MinGW 中的同一路径中找到,但我不明白为什么它会't,所以必须执行以下命令1

    glib-compile-schemas /usr/share/glib-2.0/schemas/
    

    这将创建一个文件gschemas.compiled,因此您需要写入权限,然后错误就会消失。


    1前提是 GLib 架构安装在该目录中。

    【讨论】:

    • 因为我和许多其他用户一样被困在 Windows 上。顺便说一句,我已经提到我已经成功编译了它们.. 尽管它们已经在包中编译(即gschemas.compiled 已经存在)
    • 删除后重新编译,或者搜索缺少的schema对应的.gschema.xml文件,检查是否编译成功或根本没有编译。
    • 好吧,我尝试了两个不同的gschemas.compiled,第一个是默认编译的(作为捆绑包的第 3 方依赖),另一个是我手动编译的。虽然.. 我需要使用 gtk2 的 bin 中的intl.dll,因为它不存在并且在使用gsettings 时会导致崩溃。另一方面,我不知道你在意什么。
    • 未编译,或根本未复制到可执行文件的可再发行文件夹中(连同 DLL、图标、主题等)
    【解决方案3】:

    我可以从以下文档中解决此问题,如下所示 https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html 在我的情况下,将以下环境变量添加到类似于下面的共享文件夹

    XDG_DATA_DIRS : D:\vcpkg\installed\x64-windows\share

    【讨论】:

      猜你喜欢
      • 2016-06-17
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2020-03-06
      • 1970-01-01
      相关资源
      最近更新 更多