.NET Core – gdiplus.dll nicht gefunden unter Ubuntu

Die Tage kam es zu einer Fehlermeldung in meinem QrCoder-Projekt. Es wurde gemeldet, dass der Code nicht unter Linux laufen würde, da es zu folgender Fehlermeldung käme:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Drawing.KnownColors' threw an exception. 
---> System.TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. 
---> System.DllNotFoundException: Unable to load DLL 'gdiplus.dll': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)
at System.Drawing.GDIPlus.GdiplusStartup(UInt64& token, GdiplusStartupInput& input, 
[...]

Die Fehlermeldung hatte ihren Ursprung jedoch nicht in meinem QrCoder, sondern in dem Zusammenspiel des .NET Core Frameworks mit der GDI Plus Bibliothek. Das .NET Core Framework versucht beim Zugriff auf “System.Drawing.GDIPlus” auf die “gdiplus.dll” zuzugreifen, welche es unter Linux einfach nicht gibt.

Erster Lösungsansatz

Zuerst sollte sichergestellt werden, dass GDI+ überhaupt installiert ist. Dies lässt sich mit folgendem Shell-Befehl nachholen:

sudo apt-get install libgdiplus

Wenn libgdiplus installiert ist, fehlt jedoch noch ein weiterer wichtiger Schritt…

libgdiplus für .NET Core verlinken

Da das .NET Core Framework, unabhängig vom Betriebssystem, nach der Library mit der Endung “.dll” sucht, wird es unter Linux nicht fündig, obwohl eine valide Version der libgdiplus installiert ist. Abhilfe schafft hier ein symbolischer Link auf das libgdiplus.so file.

cd /usr/lib
sudo ln -s libgdiplus.so gdiplus.dll

Danach sollte die besagte Fehlermeldung verschwinden. So klappt es dann auch mit dem QrCoder samt .NET Core Framework unter Linux.

Raffi

Seit 2011 blogge ich hier über Programmierung, meine Software, schreibe Tutorials und versuche mein Wissen, so gut es geht, mit meinen Lesern zu teilen.

1 Kommentare

  1. Kurzum grossartig Raffi
    Habe so einiges durchgelesen und nicht überall “gestiegen” – noch – (muss man ja auch nicht).
    Ich hatte im/für das 2000 meine DOS Software mit Delphi auf Windows portiert und eben Jahr 2000 fit gemacht. Das gab dann einige hundert Installationen. Das hatte ich dann Nachfolgern übergeben.
    Seit 2013 aber bin ich in Pension, war ausgewandert für 12 Jahre, und nun aber zurück (hatte Gesundheits Issues). Programmiere nun in Delphi 10 (eine Coiffeur-Kassenlösung) und habe nun mit Lazarus und SQLite unter Linux Mint begonnen.
    Weil.. bin nun 74 aber ich will noch was machen mit meinem Brain, der kann das noch. Wenn ich auch nicht mehr so schnell bin .. aber dafür habe ich Erfahrung was Benutzer usability ist und kann eine Lösung strukturell gut hinbringen dass sie auch wart- und ausbaubar ist.
    Mein Haupt Tätigkeitsfeld ist der Amateurfunk – da bin ich am aktivsten.
    ( http://www.hb9fih.org oder https://www.qrz.com/db/HB9FIH )
    Kurz – ich werde Deine QR-Implementierung runterladen und “versuchen” sie in ein Test Projekt unter Lazarus einzubinden.

Schreibe einen Kommentar zu Erich Rieder Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.