gpt4 book ai didi

delphi - 是否可以从 32 位应用程序访问 64 位 dll?

转载 作者:行者123 更新时间:2023-12-03 14:37:32 29 4
gpt4 key购买 nike

我有一个类似于 Taskbar Shuffle 的 Delphi 应用程序其中包括一个钩子(Hook) dll。

编辑:此 Hook DLL 通过发送 Windows 消息与主应用程序进行通信。

我想添加对 XP 和 Vista x64 的支持,我最初的想法是将 dll 转换为 64 位(使用 FreePascal 编译它),但暂时保持应用程序为 32 位(Delphi)。

32位应用程序可以访问64位dll吗?

EDIT2:我正在通过 LoadLibrary 加载 dll,所以我想我陷入了困境,因为 32 位进程无法加载 64 位 dll,根据我的说法请阅读 Lars Truijens 指出的以下答案之一的链接。

最佳答案

只要 64 位 DLL 由单独的 64 位进程加载,并且 32 位进程和 64 位 DLL 之间的所有通信都是通过操作系统可以编码的松散耦合的类似 IPC 的机制,那么是的,你可以这样做。

我也做过类似的事情。 32 位应用程序需要在 DLL 中实现自定义 Print Spooler 插件。应用程序和后台处理程序加载项通过 IPC 机制进行通信(在本例中是一种表示临时文件的奇特方式)。

在 64 位系统上,32 位应用程序的所有内容都工作正常,只是 Print Spooler 拒绝加载加载项 DLL,因为 Print Spooler 当然是 64 位进程。

解决方案非常简单,只需重建 64 位的 Spooler 加载项即可。无需更改整个 32 位应用程序。

关于delphi - 是否可以从 32 位应用程序访问 64 位 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339848/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com