Cha*_*ang 9 delphi 32bit-64bit delphi-xe2
我有一些32位DLL没有匹配的64位DLL.如何从用Delphi XE2编写的64位应用程序中调用这些DLL?
Jon*_*ica 14
不,你不能直接这样做.64位进程只能执行64位代码,32位进程只能执行32位代码.
诀窍是使用多个进程....(注意这可以用于非可视代码,甚至对于GUI元素,尽管对于可视元素可能存在一些小但有问题的行为.)
最常见的解决方案是将32位dll包装在进程外COM服务器中,您可以通过64/32位屏障调用该服务器.(这有两种方式,您可以创建一个64位进程外COM服务器,并从32位应用程序调用它.)
是的,还有其他方法来设想这个,但最常见的是使用COM:
我应该补充一点,也可以创建新的32位COM服务器作为进程内COM服务器,然后配置COM +来运行它.COM +将在进程外运行它,并在进程中神奇地运行32位进程COM服务器,您可以透明地从32位和64位代码调用它,就好像它正在进行中一样.(注意,如果COM服务器是一个GUI控件,那么退出流程可能会也可能不会起作用.我合作的团队已经成功完成了,但是有一些复杂因素 - 其中一些无法克服 - 与挂钩父相关窗口和控件无法跨过程边界完成.)