在.NET

时间:2015-08-17 08:02:20

标签: .net gtk#

这与我的other recent Gtk# question适用的机器不同。

我正在尝试在安装了所有.NET 1.0到4.0的Windows 7 x64计算机上运行Gtk#程序。 (我过去一直在这台电脑上使用Gtk#,但是最后一年多了。)

  • 我已使用Mono website中的安装程序包下载并安装了Gtk#2.12.26。
  • 我已经确认该Gtk#安装的bin目录位于我的搜索路径上。 1
  • 使用SharpDevelop,我创建了一个.NET控制台项目。
  • 我添加了对atk-sharp,gdk-sharp,glib-sharp,gtk-sharp和Mono.Cairo的引用。
  • 我添加了一些最小代码(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不能。

0 个答案:

没有答案