12 Stimmen

Kann eine 64-Bit-EXE mit 32-Bit-DLLs verknüpft werden?

Ich frage, weil ich festgestellt habe, dass viele 64-Bit-EXEs mit scheinbar 32-Bit-DLLs verknüpft sind.

Zum Beispiel verlinkt meine 64-Bit-MFC-Anwendung gegen user32.dll, urlmon.dll, wininet.dll - die alle 32-Bit-DLLs sind, die sich in Windows befinden \system32.

Ist dies also einige MS-spezifische Zauberei, die für diese DLLs gilt, oder gibt es Rückwärtskompatibilität, wie es war, für 64-Bit-EXEs, die Legacy-32-Bit-DLLs verwenden müssen?

24voto

Curt Hagenlocher Punkte 20150

Sie können keine 64-Bit-EXEs mit 32-Bit-DLLs verknüpfen oder umgekehrt. Auf einem 64-Bit-Windows-Betriebssystem werden die DLLs in Windows \System32 sind eigentlich 64-Bit-DLLs. Die 32-Bit-Versionen sind in Windows \SysWow64.

13voto

Sheldon Punkte 2480

Rufen Sie 32 von 64 an, natürlich geht das. (In Windows heißt das WOW, was Windows auf Windows bedeutet). Aber umgekehrt funktioniert es nicht.

Hier haben Sie die Erklärung, wie das geht:

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/

Ich hoffe, es hilft.

2voto

Some Guy Punkte 29

Die neueste Version von Dependency Walker (zu finden hier: http://www.dependencywalker.com/ ) behebt dieses Problem. Sie findet die richtigen DLLs und vermeidet die ungenauen Fehler.

(Ich bin zwar spät dran, aber Google hat diese Frage trotzdem gefunden, als ich ein ähnliches Problem hatte).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X