【问题标题】:What does "Unhandled Exception: GLib.GException: Unhandled tag: 'requires'" mean?“未处理的异常:GLib.GException:未处理的标签:'需要'”是什么意思?
【发布时间】:2010-12-19 17:19:29
【问题描述】:

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

未处理的异常:GLib.GException: 未处理的标签:'需要'

在 Gtk.Builder.AddFromFile(String 文件名)

在 Interface.MainWindow..ctor()

在 [我的项目名称].MainClass.Main(String[] args) 在 c:\Path\To\Main.cs:line 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();
        }
    }
}

【问题讨论】:

    标签: c# windows gtk gtk#


    【解决方案1】:

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

    所以,有两种选择:

    1. 使用 glade-3 并将您的 UI 保存为 GtkBuilder 格式
    2. 使用gtk-builder-convert 实用程序

    【讨论】:

    • 它们是 GtkBuilder 格式。它们在 linux 上以 GtkBuilder 格式保存,这段代码在 linux 上运行。
    【解决方案2】:

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

    【讨论】:

    • 这似乎没有帮助。我最终只是用本机代码替换了我的 glade 文件,这解决了我的跨平台问题。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多