1

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

本文中,建议创建 64 位代理进程,该进程将使用 IPC(例如 WCF)与我的应用程序进行通信。在这里,我们可以找到使用 Runtime Callable Wrapper ( RCW ) 的解决方案。哪个更好?我开始实施代理流程,就在今天我找到了第二个解决方案,我不知道它是否适合我的需求。

我需要提一下,这个统计互操作库有数百个接口和类。我仍然只需要其中一些。我已经开始创建将其中几个作为端点托管的 WCF 服务,看起来这将是很多代码/工作。

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

问候,乔特贝克

4

1 回答 1

4

好吧,“更好”是一个加载术语。但是,是的,COM 代理可以让它变得更简单。如果您可以使用系统代理,那么当库设计得很好时,几率几乎总是很好,那么您只需将注册表项复制到 64 位密钥中并调整其中的一些以使用代理,这一切都可以在没有你写任何代码。MSDN 起始页在这里

当图书馆不支持跨公寓编组时,它就行不通了。如果您不知道它是否存在,请尝试从工作线程调用库函数。如果这不起作用,那么不要费心尝试。如果这个库容易崩溃错误,你将失去“更好的”,这在进程外场景中总是很糟糕。速度可能是一个问题,进程外调用有很多开销。但是无论哪种方式,您都被困住了。通过联系图书馆所有者寻求支持,您将得到很好的答案,而不是猜测。

于 2013-01-01T21:55:20.593 回答