我尝试让我的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();
}
}
}
4条答案
按热度按时间aydmsdu91#
奇怪...我不知道为什么在windows上GTK#不支持
requires
。无论如何,我会尝试从gladefile.glade
中删除<requires ... />
标记。bybem2ql2#
这很可能意味着您的Glade文件已损坏或有一些奇怪的。
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
实用程序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。添加后
这很管用。
在Haskell app中也发现了类似的问题。我不确定如何在C#中更改对GTK3的引用。