在64位应用程序中使用32位互操作dll

本文关键字:32位 互操作 dll 64位 应用程序 | 更新日期: 2023-09-27 17:50:25

我对使用64位进程的32位互操作dll有点困惑。为了访问8TB的内存,我将构建64位的应用程序,不幸的是,它使用了一些以32位模式构建的统计互操作库。我没有这个库的源代码,所以我不能重新构建它到64位。

在这篇文章中,建议创建64位代理进程,将使用IPC(例如WCF)与我的应用程序通信。这里我们可以找到使用运行时可调用包装器(RCW)的解决方案。哪个更好?我开始实施代理过程,就在今天,我发现了第二个解决方案,我不知道是否适合我的需要。

我需要提到的是,这个统计互操作库有数百个接口和类。但我还是需要一些。我已经开始创建WCF服务,托管其中几个作为端点,似乎这将是大量的代码/工作。

我可以使用第二种方法(RCW)使用互操作dll吗?

问候,jotbek

在64位应用程序中使用32位互操作dll

好吧,"better"是一个有内涵的词。但是,是的,COM代理可以使实现这一点变得非常简单。如果您可以使用系统代理,那么当库设计良好时,几率几乎总是好的,然后您只需要将注册表项复制到64位键中,并调整其中的一些以使用代理,这一切都可以工作,而无需编写任何代码。MSDN起始页在这里。

当图书馆不支持跨公寓封送时,它将无法工作。如果您不知道是否这样做,那么尝试从工作线程调用库函数。如果这不起作用,那就不要尝试了。如果这个库容易出现崩溃bug,那么您将失去"更好的",这在进程外场景中总是很糟糕。速度可能是一个问题,进程外调用有很多开销。但不管怎样,你都要坚持下去。通过联系库所有者寻求支持,您将得到正确的答案,而不是胡乱猜测。