可以64位EXE链接对32位DLL?

我问,因为我注意到,许多64位的EXE链接到似乎是32位的DLL

例如,我的64位MFC应用程序链接对user32.dll, urlmon.dll, wininet.dll – 所有这些都是32位DLL驻留在Windows \ system32中。

那么,这是适用于这些DLL的MS特定的魔术,还是有向后兼容,对于需要使用传统32位DLL的64位EXE?

您不能将64位EXE链接到32位DLL,反之亦然。 在64位Windows操作系统上,Windows \ System32中的DLL实际上是64位的DLL。 32位版本在Windows \ SysWow64中。

从64呼叫32,肯定可以。 (在Windows中称为WOW,意思是Windows上的Windows)。 但是,反过来说这是行不通的。

在这里你有如何解释:

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

希望它服务。

Dependency Walker的最新版本(在这里找到: http : //www.dependencywalker.com/ )修复了这个问题。 它找到正确的DLL,并避免不准确的错误。

(我迟到了,但是当我遇到类似的问题时,Google仍然发现了这个问题。)