PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DLLs und Winex Problem



8Shadow8
07.12.03, 12:18
Fast immer wenn ich ein Programm mit winex laufen lassen will (sei es ein spiel oder was anderes) habe ich ein Problem mit den DLL-Dateien. Diese können von Wine immer nicht gefunden werden, ich erhalte dann einen Fehler wie:
"err:module:PE_fixup_imports Module (file) MSVCP60.dll (which is needed by D:\Pro gramme\Microsoft Games\Freelancer\EXE\dalib.dll) not found
err:win32:PE_LoadLibraryExA can't load D:\Programme\Microsoft Games\Freelancer\E XE\dalib.dll
err:module:MODULE_LoadLibraryExA Loading of native DLL D:\Programme\Microsoft Ga mes\Freelancer\EXE\dalib.dll failed, check this file ! (GetLastError 14)
err:module:PE_fixup_imports Module (file) DALib.dll (which is needed by D:\Progr amme\Microsoft Games\Freelancer\EXE\common.dll) not found
err:win32:PE_LoadLibraryExA can't load D:\Programme\Microsoft Games\Freelancer\E XE\common.dll
err:module:MODULE_LoadLibraryExA Loading of native DLL D:\Programme\Microsoft Ga mes\Freelancer\EXE\common.dll failed, check this file ! (GetLastError 14)
err:module:PE_fixup_imports Module (file) Common.dll (which is needed by D:\Prog ramme\Microsoft Games\Freelancer\EXE\Freelancer.exe) not found"

Was muss ich tun, damit dieses Problem mit den DLL-Dateien behoben ist?
Bitte sagt mir jetzt nicht: Freelancer lässt sich eh nicht winen, das ist nur ein Beispiel, das Problem tritt bei nahezu allen Programmen auf, die irgendwelche DLLs benötigen. Die Progs mit Wine zu installieren hat auch nichts gebracht.

stefan.becker
07.12.03, 15:05
Was man halt machen muss, wenn DLLs nicht gefunden werden: Sie installieren. AM besten nach c:\windows\system(32) des Fake Windows kopieren.

8Shadow8
07.12.03, 15:16
ahja, gut das wollt ich nur wissen. Danke

Perdox
08.12.03, 07:56
Also ich habe ja auch das Problem, aber es bringt nichts, wenn ich die DLLs einfach in den Fake windows Ordner in die entsprechenden Verzeichnisse kopiere. Selbst wenn ich zum Beispiel die opengl32.dll nach windows/system32 kopiere meint winex immernoch, dass die nicht gefunden werden kann. Irgendwas muss man da doch noch machen, oder? Bitte um Hilfe!!

Benno
08.12.03, 08:11
Eine dll wird meistens in einem Programm weitergegeben und installiert.
Es gibt Programme die müssen installiert werden, und es gibt Programme die nicht installiert werden müssen.
Eine dll die installiert werden muß hat auch einen Eintrag in der Registry.
Installieren kann man die dll wenn es in einem Programm mit drin steckt und dann mit installiert wird.
Wenn man z.Beispiel die Visual Studio Entwicklungsumgebung von Microsoft hat, kann man mit dem Paket und Weitergabe Assistenten eine dll verpacken und weitergeben.
Beim Aufruf wird dann die dll. innstalliert.
Also ein einfaches kopieren reicht nicht aus.

Benno
08.12.03, 08:25
Ein Dienstprogramm was eine dll registriert ist
Regsvr32.exe
Wenn man eine Datei registrieren möchte, kann man das mit
Regsvr32.exe C:/Ordner/meine.dll
machen.
Wobei Ordner der Ordner ist in dem die dll mit dem Namen meine.dll enthalten ist.
Regsvr32.exe ist auf der Visual Basic CD im Ordner Tool enthalten.

Um eine dll zu entfernen gebrauchts Du dann
Regsvr32.exe /u C:/Ordner/meine.dll
um bei diesem Beispiel zu bleiben.
Aber die VB-Entwicklungsumgebung wo dieses Teil drauf ist ist teuer.
Die bekommt man nicht geschenkt, ist eben keine Open Source.

Perdox
08.12.03, 09:19
Also ich weiss ja nicht. Ich habe in der Zwischenzeit rausgefunden, dass man im winesetup irgendwie die DLLs eintragen muss. Damit habe ich aber auch nichts hinbekommen. Es gibt doch offenbar so viele Leute, die mit winex alles mögliche machen. Kann mir nicht mal irgend jemand sagen, wie ich einfach mit gegebenen Mitteln (Suse 9.0 Pro + winex 3.2) zum Beispiel Battlefield oder Worms3D soweit hinbekomme, dass ich NICHT mehr den DLL-Fehler erhalte? Ich weiss, dass Worms3D mit winex nicht funktioniert, es geht mir nur um ein konkretes Beispiel, dann kann ich das auf andere Sachen übertragen und die beiden Spiele habe ich drauf zur Zeit.
Ich hab auch monkey4 oder freelancer installiert, oder sagt mir bitte wies mit mohaa oder cod gehen würde, nur ein Beispiel.
Oder noch einfacher: Schreibt mir mal bitte, wie man zum Beispiel die opengl32.dll aus dem Ordner C:\Windows\System32\ in winex einbinden würde.
Ich kenne micht nunmal kaum mit dem Kram aus, ich benutzte erst seit ein paar wochen Linux und wollte jetzt mal schauen, was man damit sonst noch machen kann außer office und internet und ob ich einige Spiele darauf spielen kann. Ich will dieses &%§"/ Windows nicht mehr ...

Benno
08.12.03, 09:51
Versuche doch mal das setup von dem Programm was Du laufen lassen willst unter linux auszuführen.
Vorher solltest du aber das wine setup gemacht haben.
Danach mal die exe Datei aufrufen.
Mehr weiss ich auch nicht.
Ach ja. im setup von wine die Bildschirmgröße anpassen, welche windows emuliert werden soll. Alle dll´s importieren lassen. Das alles muß natürlich stimmen.
Aber eines vorweg, ich bekomme auch nicht alle Programme angezeigt.

Perdox
08.12.03, 19:28
Das mit wine installieren habe ich auch schon gemacht, mit dem Selben Ergebnis: Die blöde DLL fehlt. Was meinst du mit "DLLs importieren lassen"?

Benno
08.12.03, 20:06
Im wine setup gibt unter dem Punkt Registry die Option
->Load windows registry files.
Vielleicht ist bei Dir die Option nicht aktiviert.

Perdox
08.12.03, 21:23
Achso, klar die gibts. Das ist standardmäßig aktiviert.

Benno
08.12.03, 21:57
So viel ich weiss emuliert wine ja dll´s.
Das kann aber nicht immer richtig funktionieren, weil M$ die Schnittstellen ja nicht offen legt. Man geht also hin versucht herauszufinden was bestimmte dll´s machen, und versucht diese zu emulieren.
Nun können aber noch andere Funktionen in diesen dll`s stecken, die man noch nicht erkannt hat, und schon ist es mit der Emulation essig.
Genauso verhält es sich mit den Api´s. Diese Schnittstellen für Programme sind auch nicht alle öffentlich.
Ich habe zum Beispiel mal mit einem Api Viever von M$ eine bestimmte Funktion ausgelesen, dabei zeigte Sie zwar Argumente und soweiter an, die auch funktionierten.
Doch da gab es auch noch Argumente die man übergeben konnte, die nicht in der Api Deklaration vorhanden waren.
Auf gut Deutsch heißt das. Eine dll ist eine Blackbox, die manchmal 1 manchmal 5 oder ...oder 100 ,u.s.w. Funktionen beinhalten kann, von denen einige offengelegt werden können aber von denen auch einige versteckt sein können.
Wenn man nicht alle kennt, kann es auch zu unerwünschten Ergebnissen kommen.
Das merkt man entweder sofort oder später oder gar nicht.
Sonst wäre die Emulation viel besser. Es gibt keine hundertprozentige Emulation für win
Dazu müßte man den kompletten Code von M$ offengelegt vor sich haben, was aber nicht der Fall sein wird. Also sind diese Emulationen in der Hinsicht etwas mehr als eine Krücke, die mehr oder weniger gut funktioniert. Außerdem kommt noch das andere Betriebssystem dazu, was auch noch seine eigenen Hindernisse hat, die auf jeden Fall gegeben sind. Man kämpft dabei gegen Windmühlen.