在.NET DLL中包装32位本机DLL以在64位.NET应用程序中使用

时间:2014-05-20 23:14:58

标签: c# .net dll 64-bit native

我有一个32位本机DLL,我动态加载并在32位.NET应用程序中进行通信。 32位应用程序受到.NET的2Gb内存限制的限制,所以我有一个64位版本可用,我有一些64位本机DLL可以正常工作,但我有一些DLL只能用于我在32位。

我一直在阅读有关使用COM或IPC的各种解决方法,但是想知道以下内容是否可行:

1 - 创建“任何CPU”.NET DLL。 2 - 在此.NET DLL中加载32位本机DLL。 3 - 直接与我的64位.NET应用程序中的.NET DLL通信。

1 个答案:

答案 0 :(得分:1)

不,这不起作用。如果您编译依赖于32位本机DLL的AnyCPU程序集,那么如果您尝试在x64模式下加载它,它将引发异常。这与将您自己的应用程序编译为AnyCPU并尝试加载32位模块的情况没有什么不同。

唯一的选择是创建一个单独的32位进程,并使用某种IPC在32位和64位进程之间进行通信。