我问,因为我注意到许多64位EXE链接到看似32位的DLL。
例如,我的64位MFC应用程序链接到user32.dll, urlmon.dll, wininet.dll
- 所有这些都是驻留在windows \ system32中的32位DLL。
这是一些适用于这些DLL的特定于MS的魔法,或者对于需要使用传统32位DLL的64位EXE是否存在向后兼容性?
答案 0 :(得分:23)
您无法将64位EXE链接到32位DLL,反之亦然。在64位Windows操作系统上,Windows \ System32中的DLL实际上是64位DLL。 32位版本在Windows \ SysWow64中。
答案 1 :(得分:13)
从64调用32,当然可以。 (在Windows中,这称为WOW,这意味着Windows上的Windows)。但是,反之亦然。
在这里您可以解释如何:
http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/
希望它有用。
答案 2 :(得分:2)
最新版本的Dependency Walker(在此处找到:http://www.dependencywalker.com/)解决了这个问题。它找到了正确的DLL,并避免了不准确的错误。
(我迟到了,但是当我遇到类似的问题时谷歌仍然发现了这个问题。)