这与我的other recent Gtk# question适用的机器不同。
我正在尝试在安装了所有.NET 1.0到4.0的Windows 7 x64计算机上运行Gtk#程序。 (我过去一直在这台电脑上使用Gtk#,但是最后一年多了。)
Application.Init();
,创建并显示新窗口)。运行应用程序时,抛出以下异常:
System.TypeInitializationException: Der Typeninitialisierer für "Gtk.Container" hat eine Ausnahme verursacht. ---> System.DllNotFoundException: Die DLL "gtksharpglue-2": Die angegebene Prozedur wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007F) kann nicht geladen werden.
bei Gtk.Container.gtksharp_gtk_container_get_focus_child_offset()
bei Gtk.Container..cctor()
--- End of inner exception stack trace ---
bei Gtk.Container..ctor(IntPtr raw)
bei Gtk.Bin..ctor(IntPtr raw)
bei Gtk.Window..ctor(WindowType type)
bei Gtk.Window..ctor(String title)
bei GtkSharpTest.Program.Main(String[] args) in ...\GtkSharpTest\Program.cs:Zeile 21.
关键信息似乎是:
System.DllNotFoundException:死DLL“gtksharpglue-2”:Die angegebene Prozedur wurde nicht gefunden。 (Ausnahme von HRESULT:0x8007007F)kann nicht geladen werden。
含义
System.DllNotFoundException:无法加载DLL“gtksharpglue-2”:找不到指定的过程。 (HRESULT异常:0x8007007F)
名为gtksharpglue-2.dll
的文件位于系统搜索路径上的Gtk#bin目录中。值得注意的是,我的本地Mono安装具有该文件的旧版本,但即使我使用较新版本替换Mono安装中的文件,该消息仍然存在。无论如何,Mono的安装目录都不在我的搜索路径上。
如何解决此问题,如何确保我的Gtk#计划的非技术用户不会遇到同样的问题?
1 :值得注意的是,bin目录 not 被安装程序包自动添加到搜索路径中(或the search path had become too long once again,因而没有'按照需要工作,不再确定);我不得不手动编辑搜索路径。在任何情况下,之前我已经这样做了,libglib-2.0-0.dll
是报告丢失的文件。 在之后我编辑了搜索路径,显然可以加载该文件,只有gtksharpglue-2.dll
不能。