Hi,

Thank you for your quick reply!

With Mono 2.0.1, there is no longer a System.Drawing.dll.config file,
instead the relevant dllmap elements are in the
/Library/Frameworks/Mono.framework/Versions/2.0.1/etc/mono/config

I have solved my particular problem, by adding the dllmap information
explicitly by adding a call to mono_config_parse_memory() to the native C++
code.  Granted, this isn't a particularly elegant solution.

Anthony

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Laurent Etiemble
Sent: Thursday, October 16, 2008 9:13 AM
To: users@lists.monobjc.net
Subject: Re: [EMAIL PROTECTED] An mkbundle with gdiplus.dll

Hello,

In Mono 1.9.1, the libgdiplus library mappings are contained in the
System.Drawing.dll.config file, and not in the machine.config. Is this
file still exists ?

Could you post the log of the NAnt build process and take a look at
your build folder: it must contains the config files that have been
modified before their inclusion.

Maybe there is some changes in the Mono 2.0 that breaks the whole
relocating process.

Regards, Laurent Etiemble.

2008/10/15 Anthony Bowker <[EMAIL PROTECTED]>:
> Hi everyone,
>
>
>
> I am having a terrible time building a native binary with mkbundle of my
> Application.  My App uses Monoobjc.Cocoa and System.Drawing.  The latter
> requires gdiplus.dll.
>
>
>
> I am using the MonoFramework-2.0_4 and when Mono is installed on the
> machine, the machine.config file contains these two dllmap lines to help
> apps locate gdiplus.dll:
>
>       <dllmap dll="gdiplus.dll"
>
target="/Library/Frameworks/Mono.framework/Versions/2.0/lib/libgdiplus.dylib
"
> />
>
>       <dllmap dll="gdiplus"
>
target="/Library/Frameworks/Mono.framework/Versions/2.0/lib/libgdiplus.dylib
"
> />
>
>
>
> I am using the excellent NAnt.Monobjc.dll mkbundle task to create my
native
> binary, with the following fragments:
>
>     <mkbundle exe="${build.dir}/MyApp.exe"
>
>         todir="${macbuild.dir}"
>
>         target="MACOSX_10_4"
>
>         universal="true"
>
>         rebuild="true">
>
>       <search-in basedir="${build.dir}"/>
>
>     </mkbundle>
>
>     <mkappl name="MyApp"
>
>         todir="${mac.dir}"
>
>         native="true"
>
>         icon="${build.dir}/Mac/MyApp.icns"
>
>         infoplist="${build.dir}/Mac/Info.plist">
>
>
>
>       <!-- Copy executable -->
>
>       <copy-in-macos basedir="${macbuild.dir}">
>
>         <include name="MyApp"/>
>
>         <include name="lib*.dylib"/>
>
>       </copy-in-macos>
>
>
>
>       <!-- Copy other files or folder -->
>
>       <copy-in-resources basedir="${build.dir}/Mac">
>
>         <include name="MyShell.nib/*"/>
>
>       </copy-in-resources>
>
>     </mkappl>
>
>
>
> When I add the following element, it correctly copies the libgdiplus.dylib
> and depenedent files to the MacOS folder of my bundle
>
>     <with-lib
>
file="/Library/Frameworks/Mono.Framework/Versions/2.0/lib/libgdiplus.dylib"
> />
>
>
>
> But when I run the app without Mono installed on the machine, I still get
> the System.DllNotFoundException: gdiplus.dll
>
>
>
> So it is obviously missing the dllmap entries and the embedded mono
runtime
> is not able to resolve gdiplus.dll to libgdiplus.dylib (or in fact
> libgdiplus.0.0.0.dylib in this case) to load it from my MacOS directory.
>
>
>
> I have tried creating both an App.config and Machine.config file and
> embedding using the mkbundle task, but Mono still seems unable to either
> load the config files, or use the dllmap entries:
>
> <configuration>
>
>   <dllmap dll="gdiplus.dll" target="libgdiplus.0.0.0.dylib"/>
>
>   <dllmap dll="gdiplus" target="libgdiplus.0.0.0.dylib"/>
>
> </configuration>
>
>
>
> Any help would be very much appreciated!
>
>
>
> Laurent, I noticed your reply to this list on August 11th (subject:
.config
> file) in which you mention a possible Mono runtime bug when config files
are
> embedded with mkbundle.  Is there any update with this?
>
>
>
> Also, is there any way to programatically set dllmap information, since in
> my code before I use System.Drawing?
>
> I would love to say something like MonoRuntime.DllMaps.Add("gdiplus.dll",
> "libgdiplus.0.0.0.dylib");
>
>
>
> Many thanks,
>
>
>
> Anthony
>
>
>
>
>
>

Reply via email to