2012-01-29 26 views
3

我正在为64位运行的应用程序编写加载项,但是我需要使用来自32位库的对象(该库仅在32位中)。有什么办法可以做到这一点?是否有任何可能的方式在64位c#应用程序中使用32位库?

+3

我相信你可以在32位进程中托管32位库,然后使用进程间通信来数据来回编组。简短的回答:这并不容易。 – user7116 2012-01-29 20:17:39

+2

你真的*需要64位模式吗?这很少见。简单的解决方法是将EXE项目的Platform目标设置为x86。 – 2012-01-29 20:57:00

+2

@Hans听起来像瑞克没有控制主机应用程序,因为他正在编写一个加载项 – 2012-01-29 20:57:57

回答

8

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

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

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

7

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

相关问题