【问题标题】:Mono on OSX: Couldn't find gtksharpglue-2.dllOSX 上的 Mono:找不到 gtksharpglie-2.dll
【发布时间】:2012-12-14 19:59:43
【问题描述】:

我正在尝试在 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");
        }
    }
}

当我编译并运行该 sn-p 时,它似乎找到并包含 GTK 库,它会在控制台打印“正在加载..”,但 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

虽然我的文件系统上不存在那个特定的 .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 上搜索过,但要么我对这个主题太陌生而无法识别有用的信息,要么就是不存在有用的信息。有人能帮我吗?提前致谢!

【问题讨论】:

    标签: c# macos mono gtk


    【解决方案1】:

    如何运行 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 runtime http://www.go-mono.com/mono-downloads/download.html

    最后它看起来像:

    【讨论】:

      【解决方案2】:

      我找到了问题,我的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" />
      

      【讨论】:

      • 那些 dllmap 应该已经随 gtk-sharp 一起提供了,要注意找出问题的根本原因,以便我们在上游为下一个开发人员修复它?
      • @knocte 我会调查的。我有点假设像glib 这样的依赖项在安装后已经配置好了,所以也许这就是问题所在。您是 Mono 还是 gtk-sharp 开发人员?
      • 在 3.2.3 版本中安装 10 次后问题仍然存在。搞笑:\
      【解决方案3】:

      也遇到了这个问题,虽然 Fabian 的回答是正确的,但这不是我的解决方案。根据this bug filed with Xamarindllmap 的以下条目需要添加到/Library/Frameworks/Mono.framework/Versions/Current/etc/mono/config(删除了几个重复项)。

      <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" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多