我有一个 32 位 native DLL,我动态加载 并在 32 位 .NET 应用程序中与之通信。然而,32 位应用程序受 .NET 的 2Gb 内存限制的限制,所以我有一个 64 位版本可用,并且我有一些 64 位 native DLL 可以正常工作,但我有一些 DLL 只能用于我是 32 位的。
我一直在阅读有关使用 COM 或 IPC 的各种变通方法的 SO,但想知道以下方法是否可行:
1 - 创建“任何 CPU”.NET DLL。 2 - 在此 .NET DLL 中加载 32 位 native DLL。 3 - 从我的 64 位 .NET 应用程序直接与 .NET DLL 通信。
最佳答案
不,这行不通。如果您编译依赖于 32 位 native DLL 的 AnyCPU 程序集,那么如果您尝试以 x64 模式加载它,它将抛出异常。这与您将自己的应用程序编译为 AnyCPU 并尝试加载 32 位模块的情况没有什么不同。
唯一的选择是创建一个单独的 32 位进程并使用某种 IPC 在 32 位和 64 位进程之间进行通信。
关于c# - 在 .NET DLL 中包装 32 位 native DLL 以在 64 位 .NET 应用程序中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771490/