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.
If you’re still on the fence: grab your favorite earphones, head down to a Best Buy and ask to plug them into a Zune then an iPod and see which one sounds better to you, and which interface makes you smile more.
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.