我有一个我无法控制的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将把 call 从64位编码为32位,然后再次返回。
  • 使用IPC(例如命名管道,TCP或WCF)在32位和64位应用程序之间进行通信。
  • 使用内存映射文件通过共享数据结构交换数据。这可能是最复杂的解决方案。
  • 09-11 17:49