[Mono-list] gdiplus.dll Not Found?

David P. Donahue ddonahue@ccs.neu.edu
Mon, 14 Feb 2005 06:43:37 -0500


> This is strange. In interop / PInvoke, 
> 
> Given foo.dll, mono will try:
> 
> 	foo.dll.so, libfoo.dll.so, libfoo.so
> 
> to probe for the correct unix library. So libgdiplus.so should be
> probed.

I've tried several different permutations of symlinks and none of them 
seem to fix it.

> What distribution are you running this on. If we make RPM packages for
> it, I'll make sure to check that GDI+ works out of the box.

Slackware 10.0

> Also, it might make sense to continue this thread on the public mailing
> list, there might be other tricks that I'm not aware that's causing this
> problem right now.

Done.  Pasting previous conversation below.


Regards,
David P. Donahue
ddonahue@ccs.neu.edu


----------BEGIN PASTE----------
 >I knew I forgot to specify something in my post.  Libgdiplus 1.0.5 was
 >> installed just prior to my mono install.  I configured that, mono, and
 >> all the other dependencies I needed, with a /usr prefix and installed
 >> them all.
 >>
 >> There are a handful of libgdiplus files in my /usr/lib, but none with a
 >> .dll extension.  Did a find from / for libgdiplus.dll and came up with
 >> nothing, not even in the source tree where i built it.
 >>
 >> Any ideas?  Would it be worth an attempt to install libgdiplus 
1.1.3, or
 >> would that definitely require upgrading mono as well?  I'd just prefer
 >> to stay in the release versions if possible.


There should be a mapping between libgdiplus.dll into libgdiplus.so.
It's strange that Mono is not able to find the right library. Are you
sure your mono is in the same prefix as libgdiplus's prefix? Also, it
might be that you need to add some more dirs to $LD_LIBRARY_PATH.


--------------CUT--------------


I just tried:
ln -s /usr/lib/libgdiplus.so [wwwroot]/bin/gdiplus.dll

Which produced the following stack trace when I try to load the same 
test page from before:

----------BEGIN PASTE----------
Compilation Error
Description: Error compiling a resource required to service this 
request. Review your source file and modify it to fix this error.

Error message: (0,0) : error CS0006: Cannot find assembly 
`/home/www/.www/bin/gdiplus.dll' (0,0) : error : (0,0) : error failed: 1 
error(s), 0 warnings

File name: /home/www/.www/test/test2.aspx

Source File:

Line 1: // 
------------------------------------------------------------------------------
Line 2: //  <autogenerated>
Line 3: //      This code was generated by a tool.
Line 4: //      Mono Runtime Version: 1.1.4322.573
Line 5: //
Line 6: //      Changes to this file may cause incorrect behavior and 
will be lost if
Line 7: //      the code is regenerated.
Line 8: //  </autogenerated>
Line 9: // 
------------------------------------------------------------------------------
Line 10:
Line 11: namespace ASP {
Line 12:     using System;
Line 13:     using System.Collections;
Line 14:     using System.Collections.Specialized;
Line 15:     using System.Configuration;
Line 16:     using System.Text;
Line 17:     using System.Text.RegularExpressions;
Line 18:     using System.Web;
Line 19:     using System.Web.Caching;
Line 20:     using System.Web.Security;
Line 21:     using System.Web.SessionState;
Line 22:     using System.Web.UI;
Line 23:     using System.Web.UI.WebControls;
Line 24:     using System.Web.UI.HtmlControls;
Line 25:
Line 26:     public class test2_aspx : cyber0ne.test2, 
System.Web.SessionState.IRequiresSessionState {
Line 27:
Line 28:         private static bool __intialized = false;
Line 29:
Line 30:         public test2_aspx () {
Line 31:             if ((ASP.test2_aspx.__intialized == false)) {
Line 32:                 ASP.test2_aspx.__intialized = true;
Line 33:             }
Line 34:         }
Line 35:
Line 36:         protected override bool SupportAutoEvents {
Line 37:             get {
Line 38:                 return false;
Line 39:             }
Line 40:         }
Line 41:
Line 42:         protected System.Web.HttpApplication ApplicationInstance {
Line 43:             get {
Line 44:                 return 
((System.Web.HttpApplication)(this.Context.ApplicationInstance));
Line 45:             }
Line 46:         }
Line 47:
Line 48:         public override string TemplateSourceDirectory {
Line 49:             get {
Line 50:                 return "/test";
Line 51:             }
Line 52:         }
Line 53:
Line 54:         private void __BuildControlTree(System.Web.UI.Control 
__ctrl) {
Line 55:         }
Line 56:
Line 57:         protected override void FrameworkInitialize() {
Line 58:             this.TraceModeValue = System.Web.TraceMode.SortByTime;
Line 59:             this.Request.ValidateInput();
Line 60:             this.__BuildControlTree(this);
Line 61:         }
Line 62:
Line 63:         public override int GetTypeHashCode() {
Line 64:             return 493423195;
Line 65:         }
Line 66:     }
Line 67:
Line 68: }
-----------END PASTE-----------

Is this at all helpful, or is this expected behavior for what I tried? 
1.1.4 is being released as the new latest stable version, you say? Well, 
as soon as the Mono website reflects that, I'll download and install. 
Hopefully that will fix this for me (and hopefully I won't break my 
existing functionality in the process).


Regards,
David P. Donahue
ddonahue@ccs.neu.edu

-----------END PASTE-----------