C# 什么是;未处理的异常:GLib.GException:未处理的标记:';需要'&引用;什么意思?

C# 什么是;未处理的异常:GLib.GException:未处理的标记:';需要'&引用;什么意思?,c#,windows,gtk,gtk#,C#,Windows,Gtk,Gtk#,我正在尝试让我的linux Gtk应用程序在Windows上运行。当我尝试运行它时,会收到以下错误消息: 未处理的异常:GLib.GException: 未处理的标记:“需要” 在Gtk.Builder.AddFromFile(字符串 文件名) 在Interface.MainWindow..ctor()处 位于[My Project Name].MainClass.Main(字符串[]) c:\Path\To\Main.cs中的args):第10行 当试图从我的Glade文件构建接口时,似乎发生

我正在尝试让我的linux Gtk应用程序在Windows上运行。当我尝试运行它时,会收到以下错误消息:

未处理的异常:GLib.GException: 未处理的标记:“需要”

在Gtk.Builder.AddFromFile(字符串 文件名)

在Interface.MainWindow..ctor()处

位于[My Project Name].MainClass.Main(字符串[]) c:\Path\To\Main.cs中的args):第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();
        }
    }
}

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

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

因此,有两种选择:

  • 使用glade-3并以GtkBuilder格式保存用户界面
  • 使用gtk生成器转换工具

  • 奇怪。。。我不知道为什么在windows GTK上不支持
    requires
    。无论如何,我会尝试从
    gladefile.glade

    中删除
    标记,它们是GtkBuilder格式的。它们在linux上以GtkBuilder格式保存,而这段代码在linux上工作。这似乎没有帮助。我最终用本机代码替换了glade文件,解决了我的跨平台问题。