[Mono-devel-list] gdiplus

stephen at covidimus.net stephen at covidimus.net
Thu Nov 4 09:03:47 EST 2004

This is a resend of part of a message I sent last week, b/c the same question has been hashed out on the list again this week and nobody seems to remember my post :-)

This _may_ or _may not_ be the problem Doug and others are experiencing, but I had exactly the same symptoms and fixed them this way.  It had nothing to do with LD_LIBRARY_PATH.

=== Begin Original Message ===

I've seen this "can't find gdiplus.dll" error in several places, and I myself had the problem last week.  I found several other posts from people who have had the same trouble, and all the suggestions I could find through googling and asking around were to check LD_LIBRARY_PATH, etc., but I actually found an entirely different cause for the problem.  Here.s a step-by-step, for all the people like me who have hit this.

The first attempt was to try different permutations of moving and renaming libgdiplus.so and modifying the dll mappings /etc/mono/config to let mono see the library.  Eventually, I managed to figure out how to turn on trace output to watch the loader go through its search process, and discovered that the library was being searched for in the right places, but dlopen was failing on it.  The error: unresolved symbol cairo_set_target_drawable.  Of course, anything named cairo* probably isn.t supposed to be in libgdiplus.so anyway.  Libgdiplus.so depends on libcairo, however, and nm libcairo showed that the function was indeed missing.

I downloaded the cairo source from CVS late PM CST on Thursday, 10/21 (so unless it.s been fixed in the past week, the problem.s still there), and hacked around in it until I found the problem.  Even though cairo.s configure found XLIB, it wasn.t building cairo_xlib_surface.c, so several functions weren.t making it into libcairo.  Cairo_xlib_surface.c _did_ appear in the source file list in the makefile, but not in the object list.  If I added cairo_xlib_surface.lo to the am_libcairo_la_OBJECTS statement in the makefile by hand, make then picked up cairo_xlib_surface.c correctly, and the rebuilt library worked fine.  The .can.t find gdiplus.dll. problem in mono went away and I was able to show my first empty form using the new SWF library!

More information about the Mono-devel-list mailing list