可以针对32位DLL进行64位EXE链接吗?

时间:2009-07-12 15:40:54

标签: windows 64-bit dll

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

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

这是一些适用于这些DLL的特定于MS的魔法,或者对于需要使用传统32位DLL的64位EXE是否存在向后兼容性?

3 个答案:

答案 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,并避免了不准确的错误。

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