[Mac] WinForms

snowtom

Mitglied
Hallo,

wenn ich folgenden Code mit mcs übersetze klappt dies erstmal.

Code:
using System;
using System.Windows.Forms;

class Test {
     public class World {
          public static void Main() {
               MessageBox.Show("Hello, World");
               return;
          }
     }
}

wenn die exe nun da ist mache ich diese noch mit macpack für Mac OS startklar. Dies klappt auch ohne Fehler.

Wenn ich diese nun im Finder starte "rattert" die Festplatte ein bisschen und das wars. Das Icon der Application ist kurz in der Dockleiste sichtbar.

Die Pfade in den XML Dateien existieren und das Monoframework ist auch installiert. Wenn ich die exe Datei mit Mono starte erhalte ich allerdings einen Fehler das es die Datei nicht gibt. An den Benutzerrechten kann es nicht liegen da ich dies auch mit sudo versucht habe.

Code:
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.Form ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: /Library/Frameworks/Mono.framework/Versions/Current/lib/libgdiplus.dylib
  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x00000] --- End of inner exception stack trace ---

  at <0x00000> <unknown method>
  at System.Drawing.Image.InitFromStream (System.IO.Stream stream) [0x00000] 
  at System.Drawing.Image.InitFromStream (System.IO.Stream stream) [0x00000] 
  at System.Drawing.Bitmap..ctor (System.Runtime.Serialization.SerializationInfo info, StreamingContext context) [0x00000] 
  at <0x00000> <unknown method>
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object[])
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] --- End of inner exception stack trace ---

  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] 
  at System.Runtime.Serialization.ObjectRecord.LoadData (System.Runtime.Serialization.ObjectManager manager, ISurrogateSelector selector, StreamingContext context) [0x00000] 
  at System.Runtime.Serialization.ObjectManager.DoFixups () [0x00000] 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x00000] 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (System.IO.BinaryReader reader, Boolean readHeaders, System.Object result, System.Runtime.Remoting.Messaging.Header[] headers) [0x00000] 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] 
  at System.Resources.ResourceReader.ReadNonPredefinedValue (System.Type exp_type) [0x00000] 
  at System.Resources.ResourceReader.ReadValueVer1 (System.Type type) [0x00000] 
  at System.Resources.ResourceReader.ResourceValue (Int32 index) [0x00000] 
  at System.Resources.ResourceReader+ResourceEnumerator.get_Value () [0x00000] 
  at System.Resources.ResourceSet.ReadResources () [0x00000] 
  at System.Resources.ResourceSet.GetObject (System.String name, Boolean ignoreCase) [0x00000] 
  at System.Resources.ResourceManager.GetObject (System.String name, System.Globalization.CultureInfo culture) [0x00000] 
  at System.Resources.ResourceManager.GetObject (System.String name) [0x00000] 
  at System.Windows.Forms.Locale.GetResource (System.String name) [0x00000] 
  at System.Windows.Forms.Form..cctor () [0x00000] --- End of inner exception stack trace ---

  at <0x00000> <unknown method>
  at System.Windows.Forms.MessageBox+MessageBoxForm..ctor (IWin32Window owner, System.String text, System.String caption, MessageBoxButtons buttons, MessageBoxIcon icon) [0x00000] 
  at System.Windows.Forms.MessageBox+MessageBoxForm..ctor (IWin32Window owner, System.String text, System.String caption, MessageBoxButtons buttons, MessageBoxIcon icon) [0x00000] 
  at (wrapper remoting-invoke-with-check) MessageBoxForm:.ctor (System.Windows.Forms.IWin32Window,string,string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)
  at System.Windows.Forms.MessageBox.Show (System.String text) [0x00000] 
  at test.start.Main () [0x00000]

Ich verwende die Mono Version 1.1.16.1_1 ppc

Gruß Tommy
 
Hi!

Ich mach zwar selber nichts mit Mono. Versuch Dir aber mal zu helfen die Exception zu deuten.
Code:
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.Form --->
// Bedeutet, dass im statischen Konstruktor der Form Klasse ist eine Ausnahme geworfen wurde.

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --->
// Die Ausnahme wurde von dem Zielobjekt eines Aufrufs geworfen.

System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus --->
// Die Ausnahme wurde innerhalb des statischen Konstruktor der GDIPlus Klasse geworfen

System.DllNotFoundException: /Library/Frameworks/Mono.framework/Versions/Current/lib/libgdiplus.dylib
// Weil die libgdiplus.dylib nicht vorhanden ist.
Vielleicht ist die Monoinstallation fehlerhaft...
Mehr kann ich dazu leider nicht sagen.

//Edit: Btw. das return; kannst Dir spaaren.
Du willst die Methode ja nicht vorzeitig verlassen. Sie wurde ja schon abgearbeitet. ;)
 
Zuletzt bearbeitet:
diese Dylib existiert. Ich konnte das selbe Problem schon mal beobachten mit einer selbstgeschriebenen C Applikation. Da reagierte dlopen() sehr merkwürdig bei dylibs. dlerror() spuckte dauernt nicht gefunden aus. Zudem habe ich DYLIB_LIBRARY_PATH gesetzt.
 

Neue Beiträge

Zurück