windows “未处理的异常:GLib.GException:未处理得标记:“要求”“是指什么?

t0ybt7op  于 2022-11-18  发布在  Windows
关注(0)|答案(4)|浏览(157)

我尝试让我的linux Gtk#应用程序在Windows上运行。当我尝试运行它时,我收到以下错误消息:
未行程的例外状况:GLib.GException:未处理得标记:'需要'
(字符串文件名)
在接口.主窗口.. ctor()
在c:\Path\To\Main.cs中的[我的项目名称].MainClass.Main(字符串[]参数):第10行
似乎是在尝试从我的Glade文件构建界面时发生的。我已经检查过了,Glade文件的路径是正确的。可能是什么地方出了问题?
下面是重现该问题的一些代码:

using System;
using Gtk;

namespace TestGtk {
    class MainClass {
        public static void Main (string[] args)
        {
            Application.Init();

            string gladefile = @"C:\path\to\gladefile.glade";
            Builder builder = new Builder();
            builder.AddFromFile(gladefile);

            Application.Run();
        }
    }
}
aydmsdu9

aydmsdu91#

奇怪...我不知道为什么在windows上GTK#不支持requires。无论如何,我会尝试从gladefile.glade中删除<requires ... />标记。

bybem2ql

bybem2ql2#

这很可能意味着您的Glade文件已损坏或有一些奇怪的。

8qgya5xd

8qgya5xd3#

您正在使用GtkBuilder加载GladeXML文件。GtkBuilder有不同的XML格式,与GladeXML不兼容(它更通用)。如果您使用glade-3设计您的UI,您可以选择另保存为GtkBuilder XML或GladeXML。同时,glade有一个名为gtk-builder-convert的实用程序,您可以使用它将GladeXML转换为GtkBuilder XML。
因此,有两种选择:
1.使用glade-3并将UI保存为GtkBuilder格式
1.使用gtk-builder-convert实用程序

r8uurelv

r8uurelv4#

Glade适用于GTK 3.x,而您的系统可能使用的是GTK 4.x。
当Python应用程序中没有使用.glade文件指定版本时,我遇到了类似的问题,运行时会显示:
Use gi.require_version('Gtk', '4.0') before import to ensure that the right version gets loaded.
它在Ubuntu更新之前工作,上次我运行if。添加后

import gi
gi.require_version("Gtk", "3.0")

这很管用。
Haskell app中也发现了类似的问题。我不确定如何在C#中更改对GTK3的引用。

相关问题