c# - .NET 并发集合可以用于 x32 到 x64 的进程间通信吗?

标签 c# c++ .net inter-process-communicat

我有一个我无法控制的 32 位应用程序。我目前让它与 32 位 C++ DLL 进行通信,该 DLL 处理数据并将其传递到 32 位 .NET DLL,我的 C# 应用程序可以在其中访问它。我想将我的 C# 应用程序升级到 64 位以获得更大的内存访问权限。

有没有办法让我的 32 位 C++ DLL 与 .NET 并发集合(特别是 ConcurrentQueue)对话?这将允许进程间通信吗?如果是的话,有什么例子可以让我学习吗?如果没有,是否有人知道任何 API 或库来解决双向 32 - 64 位进程间通信。

对于许多开发人员来说,这似乎是一个主要问题,但我的搜索尚未发现快速、可靠、可能简单的解决方案。我觉得很奇怪的是,主要的组件开发人员没有提供任何解决方案(我已经找到了)。

预先感谢您的帮助。

最佳答案

无法在进程内混合使用 32 位和 64 位应用程序及 dll。

如果您想在 32 位和 64 位应用程序之间进行通信,那么您有几个选择:

  1. 将 32 位库打包到 COM 对象中并将其托管在进程外。 COM 会将调用从 64 位编码到 32 位,然后再返回。

  2. 使用 IPC(例如命名管道、TCP 或 WCF)在 32 位和 64 位应用程序之间进行通信。

  3. 使用内存映射文件通过共享数据结构交换数据。这可能是最复杂的解决方案。

关于c# - .NET 并发集合可以用于 x32 到 x64 的进程间通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21314492/

相关文章:

.net - System.AddIn 管道应该安装在哪里?

c# - Shell 脚本与高级解释语言(C#/Java/等)的性能比较

c# - 无法让 Azure KeyVault 配置提供程序正常工作

c++ - Visual Studio 如何将 boost::function 与/GR- 一起使用,而 GCC 不能与 -fno-rtti 一起使用?

c++ - 如何使用函数指针定义多重集?

.net - 将 .NET 项目编译为独立 native 二进制文件的可用工具有哪些?

c# - 显示 :inline-block not always working

c# - 使用 Azure IOT 库创建 Xamarin.Forms .Net Standard 应用程序?

c++ - 更高效的对象交换与对象内部的大量数据容器

c# - 格式化动态 GridView