在64位应用程序中使用32位interop dll

时间:2013-01-01 20:36:40

标签: c# com interop 32bit-64bit rcw

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

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

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

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

此致 jotbek

1 个答案:

答案 0 :(得分:4)

嗯,“更好”是一个加载的术语。但是,是的,COM代理可以使它成为一个简单的方法来实现这一目标。如果你可以使用系统代理,当库设计得很好时,几率总是好的,那么你只需要将注册表键复制到64位密钥中并调整其中一些以使用代理,这一切都可以正常工作你编写任何代码。 MSDN起始页is here

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