2012-12-14 38 views
6

Tôi đang cố gắng thực hiện các bước đầu tiên của mình trong C# và muốn xây dựng một cửa sổ GTK trống làm nhiệm vụ đầu tiên của mình. Via macports Tôi đã cài đặt các gói sau:Mono trên OSX: Không thể tìm thấy gtksharpglue-2.dll

tôi cũng sử dụng MonoDevelop từ trang chủ Mono.

Tôi đã thêm gtk-sharp.dll (từ /opt/local/lib/mono/gtk-sharp-2.0) vào tài liệu tham khảo của mình. Mã của tôi trông như thế này:

using System; 
using Gtk; 

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

Khi tôi biên dịch và chạy mà đoạn mã, có vẻ như để tìm và bao gồm GTK-thư viện, nó in "Loading .." vào giao diện điều khiển, nhưng dòng sau Console.WriteLine() nguyên nhân lỗi này:

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 

trong khi đó .dll cụ thể không tồn tại trên hệ thống tập tin của tôi, một cách nhanh chóng locate gtksharpglue-2 tiết lộ các tập tin sau đây:

/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 

Những tệp đó có giúp tôi không? Các bước tiếp theo từ đây để gỡ lỗi/sửa lỗi này là gì? Tôi đã tìm kiếm trên Google nhưng tôi quá mới với chủ đề này để nhận ra thông tin hữu ích hoặc thông tin hữu ích không tồn tại. Ai đó có thể giúp tôi? Cảm ơn trước!

Trả lời

11

Các giải pháp làm thế nào để chạy các ứng dụng GTK Sharp MONO (biên soạn ví dụ với Xamarin Studio) là để làm như sau:

  1. Biên dịch của bạn ứng dụng mono/gtk-sharp dưới dạng Bản phát hành

  2. Tạo tệp tập lệnh shell (bash) như thế này (đặt tên theo cách bạn muốn)

    [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. Sau đó, bạn có thể chạy thiết bị đầu cuối này hoặc bạn có thể sử dụng công cụ đóng gói này http://sveinbjorn.org/platypus và tạo ứng dụng OSX bình thường :) (bao gồm trong gói tất cả các tệp của bạn trong Thư viện phát hành)

Sau đó, để chạy ứng dụng này trên máy Mac khác, bạn sẽ cần phải cài đặt GTK # & Mono runtime http://www.go-mono.com/mono-downloads/download.html

cuối cùng nó sẽ như thế nào: enter image description here

4

Tôi đã tìm thấy vấn đề, dllmap của tôi chưa hoàn tất.

tôi đã thêm các dòng sau vào /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

các dllmaps này nên đi kèm với gtk-sharp, hãy cẩn thận để tìm nguyên nhân gốc của vấn đề để chúng tôi khắc phục vấn đề này cho nhà phát triển tiếp theo? – knocte

+0

@knocte Tôi sẽ xem xét nó. Tôi loại giả định rằng các phụ thuộc như 'glib' sẽ được cấu hình sau khi cài đặt, vì vậy có lẽ đây là nơi mà vấn đề là. Bạn có phải là nhà phát triển Mono hoặc gtk-sharp không? – Fabian

+0

vâng tôi đã đóng góp cho cả hai – knocte

1

Ran vào vấn đề này là tốt và mặc dù câu trả lời Fabian là đi đúng hướng, đó không phải là giải pháp cho tôi .Theo this bug filed with Xamarin, các mục sau đây để dllmap được yêu cầu phải được thêm vào /Library/Frameworks/Mono.framework/Versions/Current/etc/mono/config (với một vài bản sao đã bị xóa).

<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" /> 
Các vấn đề liên quan