Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GLib GIO错误**:系统上未安装GSettings架构_C_Gtk_Mingw_Gtk3 - Fatal编程技术网

C GLib GIO错误**:系统上未安装GSettings架构

C GLib GIO错误**:系统上未安装GSettings架构,c,gtk,mingw,gtk3,C,Gtk,Mingw,Gtk3,很遗憾,我使用的是Windows(Windows7 x64)。 在Code::Blocks和GTK+3.6.4中使用MinGW编译器。 我从glib手动编译了所有模式 当我使用“文件选择器”对话框/颜色选择器时-这无关紧要, 我得到以下错误: GLib GIO ERROR**:系统上未安装GSettings架构,程序终止 要解决这个问题,我必须做些什么?问题在于系统上显然没有编译的油嘴滑舌的模式 您需要glib编译模式并找到glib-2.0/schemas目录,该目录位于/usr/share

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


当我使用“文件选择器”对话框/颜色选择器时-这无关紧要, 我得到以下错误:
GLib GIO ERROR**:系统上未安装GSettings架构
,程序终止



要解决这个问题,我必须做些什么?

问题在于系统上显然没有编译的油嘴滑舌的模式

您需要
glib编译模式
并找到
glib-2.0/schemas
目录,该目录位于
/usr/share/glib-2.0/schemas
,我不知道它是否会在MinGW中的同一路径中找到,但我不知道为什么它不会找到,因此您必须执行以下命令1

glib编译模式/usr/share/glib-2.0/schemas/ 这将创建一个文件
gschemas.compiled
,因此您需要写入权限,然后错误将消失



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

GSettings查看
$XDG\u DATA\u 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_DIRS:D:\vcpkg\installed\x64 windows\share

,因为我和许多其他用户一样都坚持使用windows。顺便说一下,我已经提到我已经成功地编译了它们。。尽管它们已经在bundle中编译(即
gschemas.compiled
已经存在),删除它并重新编译它,或者搜索与缺少的
模式
对应的
.gschema.xml
文件,检查它是否编译成功或是否编译过。我尝试了两种不同的
gschemas.compiled
第一种,默认情况下编译(依赖于捆绑包的第三方),另一种,由我手动编译。尽管。。我需要从gtk2的bin中使用
intl.dll
,因为它不存在,并且在使用
gsettings
时导致崩溃。另一方面,我不知道你在想什么。没有编译,或者只是没有复制到可执行文件的可再发行文件夹(以及DLL、图标、主题等)中,我从来没有完全理解这个变量的含义。这是一个系统环境变量,我可以从高级系统设置中设置,名称为
XDG\u DATA\u DIR
,值为
D:\apps\gtk\share\glib-2.0\schemas
,我的目标是静态编译我的程序。
XDG\u DATA\u DIR
环境变量是一个以冒号分隔的目录列表,按优先顺序递减,用于计算文件路径-请参阅:作为旁白:GLib和GTK+不太喜欢静态编译,因为它们已经或依赖于各种运行时可加载模块。您可以调整其中大多数的加载路径。不过,在这种情况下,加载文件与静态或动态链接无关。它是辅助文件的位置,您可以使用环境变量来处理可重定位性。听起来可能有些无礼。。但我看到你有足够的知识来帮助我。您是否有空闲时间通过Team Viewer提供帮助。我会记住一个作为回报。返回成功+1。这为我解决了这个问题,并且很可能回答了这个问题,尽管它没有被标记为这样(并且已经出轨)。