Schnäppchen

Kategorien

Wine: fehlende DLLs

Vor ein paar Tagen bekam ich eine sehr aufgeregte Mail von einem Linux-Experten. Der Absender beschwert sich wortreich, dass es immer noch keine Linux-Version von einem meiner Programme gibt. Ganz weit scheint es mit den Kenntnissen dieses Linux-Spezis wohl nicht her zu sein, sonst hätte er vielleicht schon mal etwas von Wine gehört. Das angesprochene Programm läuft völlig problemlos unter einem unmodifizierten Wine.

Gut, auf hysterische Mails mit schlechter Wortwahl reagiere ich sowieso nicht!

myNewton unter Linux

myNewton unter Linux

Aber es gibt sicher viele “normale” Anwender da draußen, die sofort von Windows nach Linux wechseln würden, wenn sie ein paar wichtige Programme mitnehmen könnten. Können sie! Leider müssen aber manchmal ein paar zusätzliche DLLs installiert werden. Hier eine kurze Anleitung, wie man ein anderes meiner Windows-Programme – nämlich myNewton – unter Linux zum Laufen bringt.

Zunächst muss wine installiert werden. Unter OpenSuse ruft man dazu die Paketverwaltung  (Menu/Software installieren), gibt in das Suchfeld “wine” ein und markiert das Paket “wine- An MS Windows Emulator” zum installieren. Unter debian gibt man an der Konsole den Befehl “apt-get install wine” ein.

Beim ersten Aufruf installiert sich wine für den betreffenden Benutzer von selbst. Vor allem wird im Homeverzeichnis das versteckte Verzeichnis .wine angelegt. Darin befindet sich dann auch das Verzeichnis drive_c, dass dem Laufwerk C: eines normalen Windows-Rechners entspricht. Um myNewton dort zu installieren entpackt man das myNewton-Archiv irgendwo im “drive_c” Verzeichnis. ZumBeispiel so:

unzip -d ~/.wine/drive_c/Programme/MyNewton mynewton-multilang.zip

Wenn man nun versucht das Programm mit wine zu starten, gibt es eine Fehlermeldung:

err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Programme\\MyNewton\\MyNewton.exe") not found

Das liegt daran, dass ich die Microsoft Foundation Classes (MFC) nicht direkt in das Programm compiliert habe, sondern sie zur Laufzeit als Dll nachlade. Das Programm wäre sonst erheblich größer geworden.

Um den Fehler zu beheben muss die fehlende mfc42.dll in den Ordner ~/.wine/drive_c/windows/system32 kopiert werden. Obwohl das Programm ein paar gewagte Grafik-Tricks benutzt funktioniert dann alles bestens. Siehe am Ende dieses Artikels, wo man die besagte DLL her bekommt.

Wenn man ein paar wichtige DLLs in den system32 Ordner kopiert hat, dann laufen fast alle Windows-Programme – ausgenommen vielleicht manche grafisch anspruchsvollen Spiele – unter wine ebenso gut wie myNewton. Wofür die einzelnen DLLs zuständig sind, ist ganz gut in der englischsprachigen Wikipedia beschrieben.

Zuletzt kann man sich den Aufruf von myNewton unter Linux erleichtern, wenn man sich ein Alias oder ein kleines Start-Skript bastelt. Ich mache das immer lieber mit einem Skript und lege das in den Ordner ~/bin. Das würde dann so aussehen:

#!/bin/sh
cd ~/.wine/drive_c/Programme/MyNewton
wine MyNewton.exe

Und wo bekommt man fehlende DLLs her?

Ich habe noch einen alten Windows 2000 Rechner herum stehen, von dem ich mir die fehlenden DLLs auf den Linux-Rechner kopiere. Wer diese Möglichkeit nicht hat, muss sich im Internet umschauen. Soweit ich mich erinnere darf man die mfc42.dll mit eigenen Programmen ausliefern. Man findet sie deshalb überall im Internet. Da man mit heruntergeladenem ausführbarem Code vorsichtig sein sollte, darf man natürlich nicht jeder beliebigen Quelle trauen. Hier ein paar Quellen, die ich auf die Schnelle gefunden habe:

Hinterlassen Sie eine Antwort

 

 

 

Sie können diese HTML Tags verwenden

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.