[Mono-list] Possible Mac OS X bugs?

jeff clausius jeffc at sourcegear.com
Tue Dec 4 16:33:31 UTC 2012


I've been trying to coax a System.Windows.Forms app to run on Mac OS X.
 From some suggestions of others responding to request on this list, I'm
experimenting with setting the "MONO_MWF_MAC_FORCE_X11=1" env. var. and
running the app.

Note, to get this far, I had to first get GTK for 32-bit.  I chose to
use Mac Ports (getting gtk2 for i386).

So, the following are issues I encountered.  Can anyone let me know if
these are bugs and should be reported to Xamarin?


A)  I had to change the dll mapping of "libX11" to
"/opt/X11/lib/libX11.dylib" in the mono 'config' file.  While I do not
believe this is necessarily a bug, it is required in order to get
MONO_MWF_MAC_FORCE_X11 to work.  Note, I didn't try setting
DYLD_LIBRARY_PATH, but that may be another option.


B) X11DesktopColors.cs is hard coded to use "libgtk-x11-2.0.so.0" for
libgdk and libgtk.  While this works on Linux, within Mac OSX, the
naming convention is "dylib" for library extensions.  I got around this
by using a <dllmap> entry, but was wanting to know if this was a bug
regarding the hard coded filename within X11DesktopColors.cs.


C) Missing functions in libgdiplus.  When MONO_MWF_MAC_FORCE_X11 is
used, some of the *_linux() methods will be called from
gdipFunctions.cs.  For example, GdipCreateFromXDrawable_linux().

However, the Mac version of libgdiplus (libgdiplus.dylib) which ships
with the mono binaries must have been compiled w/ out these methods.
Running a System.Windows.Forms app with the MONO_MWF_MAC_FORCE_X11 var
set will cause the following error:

Unhandled Exception:
System.ArgumentException: A null reference or invalid value was found
System.EntryPointNotFoundException: GdipCreateFromXDrawable_linux
  at (wrapper managed-to-native)
System.Drawing.GDIPlus:GdipCreateFromXDrawable_linux (intptr,intptr,intptr&)
  at System.Drawing.Graphics.FromXDrawable (IntPtr drawable, IntPtr
display) [0x00000] in <filename unknown>:0
  at System.Drawing.Graphics.FromHwnd (IntPtr hwnd) [0x00000] in
<filename unknown>:0
  at System.Windows.Forms.XplatUIX11.GetAutoScaleSize
(System.Drawing.Font font) [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUI.GetAutoScaleSize (System.Drawing.Font
font) [0x00000] in <filename unknown>:0
  at System.Windows.Forms.Form.GetAutoScaleSize (System.Drawing.Font
font) [0x00000] in <filename unknown>:0
  at System.Windows.Forms.Form..ctor () [0x00000] in <filename unknown>:0
  at WindowsFormsApplicationMono1.Form1..ctor () [0x00000] in <filename
unknown>:0
  at (wrapper remoting-invoke-with-check)
WindowsFormsApplicationMono1.Form1:.ctor ()
  at WindowsFormsApplicationMono1.Program.Main () [0x00000] in <filename
unknown>:0

TIA,
Jeff


More information about the Mono-list mailing list