[Mono-winforms-list] System.DllNotFoundException: gdiplus.dll

Andrew Weaver andrew_weaver at sil.org
Tue Jan 24 14:32:45 EST 2006


Hello all!

I'm experiencing some difficulty getting a very simple Windows.Forms
application (built on Windows) to run on Ubuntu Linux (5.10). When I look on
the web, I see that others have had a similar problem. I've tried following
the troubleshooting instructions posted at
http://www.mono-project.com/DllNotFoundException, but have reached a dead
end with my line of enquiry.

Before I describe the troubleshooting steps I've taken, I should give a
little background. I installed Ubuntu Breezy, followed by Mono 1.1.8 taken
from the distribution's "universe" repository on my Apple laptop. I
encountered some problems with Windows.Forms applications, so I decided to
install a more up-to-date version of Mono, again on Ubuntu Breezy, but this
time on my desktop PC. Preferring to use Synaptic Package Manager to install
the software, I found repository details at
http://npw.net/2005/12/26/ubuntu-breezy-backports. With this version of Mono
(1.1.13.1), I experience the same problem as raised in the recent "Mono
hangs after looking up XKeycodeToKeysym" thread. At this point I obtained
the "Linux installer for x86" from the Mono downloads page and installed
Mono 1.1.13.2 into /opt/mono.

Now to the troubleshooting session:

$ MONO_LOG_LEVEL=debug mono HelloWorld-Win.exe
<snip>
Mono-INFO: DllImport attempting to load: 'gdiplus.dll'.
Mono-INFO: DllImport loading location: 'libgdiplus.dll.so'.
Mono-INFO: DllImport error loading library: 'libgdiplus.dll.so: cannot open
shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libgdiplus.dll.so'.
Mono-INFO: DllImport error loading library './libgdiplus.dll.so: cannot open
shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'gdiplus.dll'.
Mono-INFO: DllImport error loading library 'gdiplus.dll: cannot open shared
object file: No such file or directory'.
Mono-INFO: DllImport loading location: 'libgdiplus.so'.
Mono-INFO: DllImport error loading library: 'libtiff.so.3: cannot open
shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libgdiplus.so'.
Mono-INFO: DllImport error loading library './libgdiplus.so: cannot open
shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'gdiplus'.
Mono-INFO: DllImport error loading library 'gdiplus.so: cannot open shared
object file: No such file or directory'.
Mono-INFO: DllImport loading location: 'libgdiplus.dll'.
Mono-INFO: DllImport error loading library: 'libgdiplus.dll: cannot open
shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libgdiplus.dll'.
Mono-INFO: DllImport error loading library './libgdiplus.dll: cannot open
shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libgdiplus.dll'.
Mono-INFO: DllImport error loading library 'libgdiplus.dll: cannot open
shared object file: No such file or directory'.

(HelloWorld-Win.exe:16639): Mono-WARNING **: DllImport unable to load
library 'libgdiplus.dll: cannot open shared object file: No such file or
directory'.
<snip>

The troubleshooting instructions say that the directories specified by the
$LD_LIBRARY_PATH environment variable will be searched. I elected to have
the installer modify my ~/.bashrc file, so when I check my environment
variables, I see:

$ env | sort
<snip>
LD_LIBRARY_PATH=/opt/mono/mono-1.1.13.2/lib:
<snip>

Then, checking up on the dynamic linker, I get:

$ ldconfig -p | grep libgdiplus
        libgdiplus.so.0 (libc6) => /usr/lib/libgdiplus.so.0
        libgdiplus.so (libc6) => /usr/lib/libgdiplus.so

Although the troubleshooting instructions describe a procedure for forcing
the dynamic linker cache to be rebuilt, the implication is that rebuilding
the cache is merely a more elegant way of fixing the problem than setting
the $LD_LIBRARY_PATH variable. Since that environment variable has already
been set by the installer, will there be any benefit from rebuilding the
cache?

Note that /opt/mono/mono-1.1.13.2/lib contains both libgdiplus.so and
libtiff.so.3.5 (but not libtiff.so.3). Is it the missing libtiff.so.3 that's
the real problem?

I ran the installer using sudo so that it was able to create the mono
directory within /opt. Would I have done better to accept the default
install location, in my home directory?

Thanks for reading this far. Any help would be greatly appreciated.

--Andrew




More information about the Mono-winforms-list mailing list