2012-12-14 15 views
6

Próbuję zrobić moje pierwsze kroki w C# i chciałem zbudować puste okno GTK jako moje pierwsze zadanie. Via macports I zainstalowane następujące pakiety:Mono na OSX: Nie można znaleźć gtksharpglue-2.dll

ja również skorzystać z MonoDevelop stronę główną Mono.

Dodałem gtk-sharp.dll (z /opt/local/lib/mono/gtk-sharp-2.0) do moich referencji. Mój kod wygląda następująco:

using System; 
using Gtk; 

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

Kiedy skompilować i uruchomić że snippet, wydaje się, aby znaleźć i obejmują biblioteki GTK, drukuje „Loading ..” do konsoli, ale wiersz po Console.WriteLine() przyczyn ten błąd:

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 

Mimo że szczególną .dll nie istnieje na moim systemie plików, szybkie locate gtksharpglue-2 ujawniła następujące pliki:

/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 

Czy te pliki mi pomagają? Jakie są kolejne kroki, aby debugować/naprawić to? Przeszukałem już Google, ale albo jestem zbyt młody na ten temat, żeby rozpoznać przydatne informacje, albo przydatne informacje po prostu nie istnieją. Czy ktoś może mi pomóc? Z góry dziękuję!

Odpowiedz

11

Rozwiązanie jak uruchomić GTK Ostry MONO aplikacje (opracowano na przykład z Xamarin Studio) jest zrobić następujące:

  1. skompilować Aplikacja mono/gtk-sharp jako Wersja

  2. Utwórz plik skryptu powłoki (bash) w ten sposób (możesz go dowolnie nazwać)

    [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 
    

enter image description here

_3. Następnie możesz uruchomić ten formularz Terminal lub możesz użyć tego narzędzia do pakowania http://sveinbjorn.org/platypus i utworzyć normalną aplikację OSX :) (dołącz do pakietu wszystkie twoje pliki w katalogu Release)

Następnie, aby uruchomić tę aplikację na innym komputerze Mac, należy zainstalować GTK # & Mono czas pracy http://www.go-mono.com/mono-downloads/download.html

W końcu to będzie wyglądać: enter image description here

4

Znalazłem problem, mój dllmap był niekompletny.

I dodaje następujące linie do /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" /> 
+0

te dllmapy powinny już pochodzić z gtk-sharp, starają się znaleźć główną przyczynę problemu, więc naprawiamy go dla następnego dewelopera? – knocte

+0

@knocte Zajrzę do tego. W pewnym sensie założyłem, że zależności takie jak 'glib' będą już skonfigurowane po instalacji, więc może to właśnie jest problem. Czy jesteś programistą w wersji mono lub gtk? – Fabian

+0

Tak, przyczyniłem się zarówno do problemu – knocte

1

Ran w tej kwestii również i choć odpowiedź Fabian był na dobrej drodze, nie było to rozwiązanie dla mnie .Zgodnie z wersją this bug filed with Xamarin wymagane było dodanie następujących wpisów do dllmap do /Library/Frameworks/Mono.framework/Versions/Current/etc/mono/config (z usuniętymi kilkoma duplikatami).

<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" /> 
Powiązane problemy