我有一个我无法控制的 32 位应用程序。我目前让它与 32 位 C++ DLL 进行通信,该 DLL 处理数据并将其传递到 32 位 .NET DLL,我的 C# 应用程序可以在其中访问它。我想将我的 C# 应用程序升级到 64 位以获得更大的内存访问权限。
有没有办法让我的 32 位 C++ DLL 与 .NET 并发集合(特别是 ConcurrentQueue)对话?这将允许进程间通信吗?如果是的话,有什么例子可以让我学习吗?如果没有,是否有人知道任何 API 或库来解决双向 32 - 64 位进程间通信。
对于许多开发人员来说,这似乎是一个主要问题,但我的搜索尚未发现快速、可靠、可能简单的解决方案。我觉得很奇怪的是,主要的组件开发人员没有提供任何解决方案(我已经找到了)。
预先感谢您的帮助。
最佳答案
无法在进程内混合使用 32 位和 64 位应用程序及 dll。
如果您想在 32 位和 64 位应用程序之间进行通信,那么您有几个选择:
将 32 位库打包到 COM 对象中并将其托管在进程外。 COM 会将调用从 64 位编码到 32 位,然后再返回。
使用 IPC(例如命名管道、TCP 或 WCF)在 32 位和 64 位应用程序之间进行通信。
使用内存映射文件通过共享数据结构交换数据。这可能是最复杂的解决方案。
关于c# - .NET 并发集合可以用于 x32 到 x64 的进程间通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21314492/