c# - 在 .NET DLL 中包装 32 位 native DLL 以在 64 位 .NET 应用程序中使用

标签 c# .net dll 64-bit native

我有一个 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/

相关文章:

java - 在java中导入Dll库

dll - 具有 CMake 3 和共享库的 Visual Studio Express 12 (2013) 提供 LNK1104 错误

c# - 在非托管 C++ 代码中使用 C# 属性

c# - 面向营销人员的 Sitecore 网络表单保存项目操作

c# - 根据不存在的空间拆分乌尔都语单词

c# - 响应式扩展/UI 缓存 Web 请求数据

c# - 为什么我会收到此异常 : "he ' Microsoft. ACE.OLEDB.12。 0' provider is not registered on the local machine"?

c# - WCF 数据服务和更新

c++ - 使用 MinGW 和 wclang 交叉编译 DLL 时,我真的需要 __declspec(dllexport) 吗?

c# - 运行时的 Autofac 绑定(bind)