有没有办法在64位c#app中使用32位库?

时间:2012-01-29 20:16:08

标签: c# .net 32bit-64bit

我正在为64位运行的应用程序编写一个加载项,但是我需要使用32位库中的对象(这个库只有32位)。我有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:8)

在.NET中这很容易。您只需要一个进程中的所有模块具有相同的位宽。

因此,您只需启动一个32位子进程,将所有32位DLL放在那里,并使用.net的远程处理功能来调用其中的程序。或者像在COM-times中所说:使用进程外组件服务器。

当您需要在32位和64位模块之间传递大量数据时,它会变得更加复杂。您可以设置内存共享,但它需要比平时更多的工作。

答案 1 :(得分:7)

这里的规则很简单,但不是你想听到的。单个进程中的所有代码必须具有相同的 bit-ness 。如果您的托管进程是64位,那么该进程中的所有代码也必须是64位。因此,如果需要运行32位代码,则必须将32位代码放在单独的进程中并使用某种形式的IPC。