delphi – 如何从64位代码调用32位DLL?

我有一些32位DLL没有匹配的64位DLL.如何从Delphi XE2编写的64位应用程序中调用这些DLL?

解决方法

不,你不能直接这样做. 64位进程只能执行64位代码,32位进程只能执行32位代码.

诀窍是使用多个进程….(注意,这可以为非可视化代码,甚至GUI元素,虽然可能有一些小但有问题的行为的视觉元素.)

最常见的解决方案是将32位dll包装在一个不在进程的COM服务器中,您可以通过64/32位屏障调用它. (这两种方式,您可以创建一个64位的进程COM服务器,也可以从32位应用程序调用它).

是的,还有其他方法可以设想这个,但最常见的是使用COM:

>创建一个新的32位的进程COM服务器,托管32位
DLL并从32位dll公开所需的功能.
>从你的64位代码调用这个COM服务器

我应该补充说,也可以创建新的32位COM服务器作为进程内的COM服务器,然后配置COM来运行它. COM会将其运行,并且奇迹般地运行您的32位进程中的COM服务器,您可以透明地从32位和64位代码中调用它,就像它正在进行中一样. (注意,如果COM服务器是一个GUI控件,出于进程可能或可能不起作用,我所使用的团队已经成功完成了,但是有一些复杂性(其中一些不能被克服)与挂钩父代相关窗口和控件在整个流程边界无法完成.)

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...