【问题标题】:Launching 32 bit dll (3rd party) from a 64 bit exe in C# [duplicate]从 C# 中的 64 位 exe 启动 32 位 dll(第 3 方)[重复]
【发布时间】:2016-02-25 00:25:20
【问题描述】:

我对 32 位 dll 有运行时依赖项,该 dll 将在我的 64 位 exe 中用于某些功能。由于这个 32bit dll 是第三方 dll,他们不愿意为我们提供 64bit dll,解决这个问题的最佳方法是什么?目前我已经考虑实现新的 32 位 exe 来处理这种在 32 位 dll 和 64 位 exe 之间进行通信的依赖关系。

我尝试过的一种方法是创建一个新的 32 位 exe。因此,64 位进程与 32 位 exe 通信,后者又消耗 32 位 dll(第 3 方)。

对此的任何建议都会非常有用。

【问题讨论】:

  • 你能不能把你的程序编译成 32 位?您编译为 64 是否有特定原因?
  • 据我所知,在 64 位中使用 32 位没有问题。反之,这是不可能的。你遇到什么错误?
  • @MigueldeSousa 我不确定如何加载 32 位 DLL 并保证它传递的每个指针都在它可以寻址的最低 4GB 中。我并不是说这是不可能的,我只是从未见过它完成 :)
  • @MigueldeSousa 64 位可执行文件无法加载 32 位(可执行)dll
  • 好吧,我的错 :) 谷歌搜索并找到了这个social.msdn.microsoft.com/Forums/vstudio/en-US/…

标签: c# .net


【解决方案1】:

您可以使用 Windows Communications Foundation 和命名管道绑定使 32 位 EXE 成为服务。该服务将引用 32 位 Dll。然后您的 64 位进程可以与服务通信。定义所有数据合约将很繁琐,因此您可以从 dll 中提取您需要的内容。尽管如此,它还是比建立一个自己滚动的进程间通信机制要好。

您确定设计一个使用 dll 的变通方法并不比自己实现 dll 所需的功能更困难吗?

【讨论】:

  • 听起来不错。但是 dll 中的功能实现起来相当复杂。
猜你喜欢
  • 1970-01-01
  • 2013-06-26
  • 2013-06-08
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多