【发布时间】:2011-02-09 05:04:24
【问题描述】:
我们可以使用为 32 位编译的应用程序调用为 64 位编译的 DLL 的函数吗?
我使用的是 Windows 2008 64 位系统。但是,应用程序仍然是使用 32 位编译的。
代码涉及MFC & Windows SDK函数。
【问题讨论】:
标签: c windows interop 64-bit 32bit-64bit
我们可以使用为 32 位编译的应用程序调用为 64 位编译的 DLL 的函数吗?
我使用的是 Windows 2008 64 位系统。但是,应用程序仍然是使用 32 位编译的。
代码涉及MFC & Windows SDK函数。
【问题讨论】:
标签: c windows interop 64-bit 32bit-64bit
否。 32 位应用程序无法将 64 位模块加载到其进程空间中(反之亦然)。
请记住,仅 64 位版本的 Windows 在专用 Windows-on-Windows (WOW64) 子系统中支持 32 位进程。这使得互操作性充其量是棘手的。如果您关心技术细节,Raymond Chen 的blog entry on the subject 很有指导意义。
您要么需要重新编译其中一个,要么将其加载到单独的进程中并使用interprocess communication 在两者之间进行协调。
【讨论】:
这是不可能的。 dll中包含的二进制代码不同,指针是64位的。
【讨论】: