gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:07 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com