7

私は C# で最初のステップを実行しようとしており、最初のタスクとして空の GTK ウィンドウを作成したいと考えていました。macports次のパッケージをインストールしました。

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

また、Mono ホームページの MonoDevelop も使用します。

gtk-sharp.dll(from /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

その特定の .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 で検索しましたが、このテーマに慣れていないため有用な情報を認識できないか、有用な情報が存在しません。誰かが私を助けることができますか?前もって感謝します!

4

3 に答える 3

11

GTK Sharp MONO アプリ (Xamarin Studio などでコンパイル) を実行する方法は、次のとおりです。

  1. mono/gtk-sharp アプリを Release としてコンパイルする

  2. このようにシェルスクリプトファイル(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

最終的には次のようになります。 ここに画像の説明を入力

于 2013-03-27T09:38:11.537 に答える
4

私は問題を見つけました、私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" />
于 2012-12-14T22:44:17.220 に答える
1

この問題にも遭遇し、ファビアンの答えは正しい軌道に乗っていましたが、私にとっては解決策ではありませんでした. Xamarin に提出されたこのバグに従って、に次のエントリをdllmap追加する必要がありました/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" />
于 2014-11-26T15:50:11.650 に答える