Laden Sie 32-Bit-DLL-Bibliothek in 64-Bit-Anwendung

Gibt es eine Möglichkeit, eine 32-Bit-DLL-Bibliothek (etwas mit der gleichen Verwendung wie LoadLibrary) zu laden, möchte ich diese function zusammen mit GetProcAddress verwenden.

Ich schaute auf WOW, aber es scheint nicht die functionalität zu bieten. Die functionalität sollte vorhanden sein, da Tools wie DependencyWalker die Symbole einer 32-Bit-DLL trotz ihrer 64 Bit lesen können.

Vielen Dank

Es tut uns leid, aber Sie können eine 32-Bit-DLL nur in einen 64-Bit-process laden, wenn Sie die DLL als Datendatei laden. Sie können den Code nicht ausführen. http://support.microsoft.com/kb/282423

Microsoft empfiehlt, dass Sie Interprozess-COM verwenden, um 32-Bitcode mit einer 64-Bitanwendung zu verwenden. Hier ist ein Artikel, der den process erklärt http://blog.matmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ Es ist nicht lustig.

Es gibt einen Unterschied zwischen dem Lesen einer ausführbaren 32-Bit-Datei und dem Ausführen von Code in einer ausführbaren 32-Bit-Datei. Ich glaube nicht, dass Windows dafür irgendeine functionalität bietet.

Die einzige Möglichkeit, die Sie wahrscheinlich dazu in der Lage sind, besteht darin, einen 32-Bit-process zu erstellen, der die DLL lädt und anschließend die Kommunikation zwischen den processen durchführt, um die Ergebnisse zwischen den beiden processen zu übergeben.

Wenn Sie nur Ressourcen von diesem System erhalten möchten, können Sie es als Datendatei laden:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE); 

Rufen FindResource dann FindResource als normal auf.