OSX上的单声道:找不到gtksharpglue-2.dll

我正在尝试在C#中完成我的第一步,并希望构建一个空的GTK窗口作为我的第一个任务。 通过macports我安装了以下软件包:

  • mono@2.10.9
  • gtk-sharp@1.0.10
  • gtk-sharp2@2.12.10

我也使用Mono主页上的MonoDevelop。

我将gtk-sharp.dll (来自/opt/local/lib/mono/gtk-sharp-2.0 )添加到我的引用中。 我的代码如下所示:

 using System; using Gtk; namespace lolbr_client { class MainClass { public static void Main (string[] args) { Console.WriteLine("Loading.."); Window window = new Window("test"); } } } 

当我编译并运行该代码片段时,它似乎找到并包含GTK库,它将“Loading ..”打印到控制台,但是Console.WriteLine()之后的行会导致此错误:

 System.DllNotFoundException: gtksharpglue-2 at (wrapper managed-to-native) Gtk.Container:gtksharp_gtk_container_get_focus_child_offset () at Gtk.Container..cctor () [0x00000] in :0 

虽然我的文件系统上不存在特定的.dll,但快速locate gtksharpglue-2显示以下文件:

 /Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgtksharpglue-2.so /opt/local/lib/libgtksharpglue-2.a /opt/local/lib/libgtksharpglue-2.la /opt/local/lib/libgtksharpglue-2.so 

这些文件对我有帮助吗? 从这里调试/修复此问题的后续步骤是什么? 我已经搜索了Google,但要么我对这个主题太新,要么无法识别有用的信息,要么就没有有用的信息。 有人能帮我吗? 提前致谢!

如何运行GTK Sharp MONO应用程序(例如使用Xamarin Studio编译)的解决方案如下:

  1. 将您的mono / gtk-sharp应用程序编译为Release

  2. 像这样创建shell脚本文件(bash)(无论如何都要命名)

     [sharp]!/bin/sh export DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib:$DYLD_FALLBACK_LIBRARY_PATH:/usr/lib" exec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono ./AsketicExcel.exe 

在此处输入图像描述

_3。 然后你可以运行这个表单终端或你可以使用这个打包工具http://sveinbjorn.org/platypus并创建正常的OSX应用程序:)(在包中包含所有文件在发布目录中)

然后,为了在其他mac上运行此应用程序,您需要安装GTK#&Mono运行时http://www.go-mono.com/mono-downloads/download.html

最后它看起来像: 在此处输入图像描述

我发现了这个问题,我的dllmap不完整。

/Library/Frameworks/Mono.framework/Versions/2.10.9/etc/mono/config添加到/Library/Frameworks/Mono.framework/Versions/2.10.9/etc/mono/config

       

尽管Fabian的答案是在正确的轨道上,但这个问题并不适合我。 根据Xamarin提交的这个错误 , dllmap的以下条目需要添加到/Library/Frameworks/Mono.framework/Versions/Current/etc/mono/config (删除了几个重复项)。