Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OSX上的Mono:canned';找不到gtksharpglue-2.dll_C#_Macos_Mono_Gtk - Fatal编程技术网

C# OSX上的Mono:canned';找不到gtksharpglue-2.dll

C# OSX上的Mono:canned';找不到gtksharpglue-2.dll,c#,macos,mono,gtk,C#,Macos,Mono,Gtk,我正试图在C#中完成我的第一步,并希望构建一个空的GTK窗口作为我的第一项任务。通过macportsI安装了以下软件包: 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_c

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

  • 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 <filename unknown>:0

那些文件对我有帮助吗?调试/修复此问题的下一步是什么?我已经搜索过谷歌了,但要么我对这门学科太陌生,无法识别有用的信息,要么有用的信息根本不存在。有人能帮我吗?提前谢谢

我发现问题,我的
dllmap
不完整

我在
/Library/Frameworks/Mono.framework/Versions/2.10.9/etc/Mono/config
中添加了以下行:

<dllmap os="osx" dll="libgtk-win32-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgtk-quartz-2.0.0.dylib" />
<dllmap os="osx" dll="glibsharpglue-2" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libglibsharpglue-2.so" />
<dllmap os="osx" dll="libgthread-2.0-0" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgthread-2.0.0.dylib" />
<dllmap os="osx" dll="libgthread-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgthread-2.0.0.dylib" />
<dllmap os="osx" dll="libglib-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libglib-2.0.0.dylib" />
<dllmap os="osx" dll="libgobject-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgobject-2.0.0.dylib" />

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

  • 将您的mono/gtk sharp应用程序编译为发行版

  • 像这样创建shell脚本文件(bash)(随意命名)

  • _三,。然后,您可以运行此表单终端,也可以使用此packager工具创建正常的OSX应用程序:)(在包中包含您在Release dir中的所有文件)

    然后,为了在其他mac上运行此应用程序,您需要安装GTK#&Mono runtime

    最后看起来是这样的:

    也遇到了这个问题,尽管费边的答案是正确的,但它不是我的解决方案。根据,需要将
    dllmap
    的以下条目添加到
    /Library/Frameworks/Mono.framework/Versions/Current/etc/Mono/config
    (删除两个重复项)

    
    
    这些DLLMAP应该已经随gtk sharp一起提供了,是否想找到问题的根本原因,以便我们为下一位开发人员在上游进行修复?@knocte我将对此进行调查。我有点假设像glib这样的依赖项在安装后就已经配置好了,所以这可能就是问题所在。您是Mono还是gtk sharp开发人员?在3.2.3版中安装10次后,问题仍然存在。有趣的是:\
    <dllmap os="osx" dll="libgtk-win32-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgtk-quartz-2.0.0.dylib" />
    <dllmap os="osx" dll="glibsharpglue-2" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libglibsharpglue-2.so" />
    <dllmap os="osx" dll="libgthread-2.0-0" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgthread-2.0.0.dylib" />
    <dllmap os="osx" dll="libgthread-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgthread-2.0.0.dylib" />
    <dllmap os="osx" dll="libglib-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libglib-2.0.0.dylib" />
    <dllmap os="osx" dll="libgobject-2.0-0.dll" target="/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/libgobject-2.0.0.dylib" />
    
    [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
    
    <dllmap os="osx" dll="glibsharpglue-2" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libglibsharpglue-2.so" />
    <dllmap os="osx" dll="gthread-2.0.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgthread-2.0.0.dylib" />
    <dllmap os="osx" dll="gthread-2.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgthread-2.0.dylib" />
    <dllmap os="osx" dll="glib-2.0.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libglib-2.0.0.dylib" />
    <dllmap os="osx" dll="glib-2.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libglib-2.0.dylib" />
    <dllmap os="osx" dll="glibsharpglue-2" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libglibsharpglue-2.so" />
    <dllmap os="osx" dll="gtksharpglue-2" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgtksharpglue-2.so" />
    <dllmap os="osx" dll="gobject-2.0.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgobject-2.0.0.dylib" />
    <dllmap os="osx" dll="gobject-2.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgobject-2.0.dylib" />
    <dllmap os="osx" dll="gtk-quartz-2.0.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgtk-quartz-2.0.0.dylib" />
    <dllmap os="osx" dll="gtk-quartz-2.0" target="/Library/Frameworks/Mono.framework/Versions/Current/lib/libgtk-quartz-2.0.dylib" />