【问题标题】:Can we invoke functions of a DLL compiled for 64 bit using an application compiled for 32 bit?我们可以使用为 32 位编译的应用程序调用为 64 位编译的 DLL 的函数吗?
【发布时间】:2011-02-09 05:04:24
【问题描述】:

我们可以使用为 32 位编译的应用程序调用为 64 位编译的 DLL 的函数吗?

我使用的是 Windows 2008 64 位系统。但是,应用程序仍然是使用 32 位编译的。

代码涉及MFC & Windows SDK函数。

【问题讨论】:

标签: c windows interop 64-bit 32bit-64bit


【解决方案1】:

否。 32 位应用程序无法将 64 位模块加载到其进程空间中(反之亦然)。

请记住,仅 64 位版本的 Windows 在专用 Windows-on-Windows (WOW64) 子系统中支持 32 位进程。这使得互操作性充其量是棘手的。如果您关心技术细节,Raymond Chen 的blog entry on the subject 很有指导意义。

您要么需要重新编译其中一个,要么将其加载到单独的进程中并使用interprocess communication 在两者之间进行协调。

【讨论】:

  • 如果它是一个 COM 库,你可以将它作为进程外服务器加载,假设接口是可编组的......
【解决方案2】:

这是不可能的。 dll中包含的二进制代码不同,指针是64位的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 2013-05-19
    • 1970-01-01
    • 2014-08-15
    • 2019-05-01
    • 2014-04-18
    • 2016-12-23
    • 2020-11-25
    相关资源
    最近更新 更多