【问题标题】:Executable dll loading (x32, x64): pick the right one可执行dll加载(x32,x64):选择正确的
【发布时间】:2009-04-02 09:26:39
【问题描述】:

我有一个包含多个第三方库的大型项目。我想为 32 和 64 位架构构建一切。几个库创建共享库 (dll)。将这些 dll 提供给我的项目中已编译的可执行文件的最佳方法是什么?我想我可以将所有这些 dll 放入一个添加到 PATH 变量的目录中。但是大多数从 3rd 方库创建的 dll 在 32 位和 64 位编译下都以相同的方式命名,所以我不能将它们放在一个目录中。我可以创建两个目录,一个用于 32 位 dll,一个用于 64 位 dll,并且可执行文件选择正确的 dll? 或者你有更好的主意让我的可执行文件加载正确的 dll 吗? 谢谢!

【问题讨论】:

    标签: windows dll 64-bit


    【解决方案1】:

    由于 32 位可执行文件无法选择 64 位 DLL,反之亦然。您只有一个目录包含所有 32 位(可执行文件 + DLL)和另一个包含所有 64 位的目录。

    【讨论】:

      【解决方案2】:

      目标系统是 32 位或 64 位,绝不是两者。您应该根据系统的位数仅安装所需的版本。然后,您只需拥有两组不相交的二进制文件,并安装目标系统所需的一组,并且在运行时检测要加载的内容永远不会遇到问题。

      【讨论】:

      • 其实对于WOW来说,64位系统也是32位系统。但是你有一个 32 位和一个 64 位的 Program Files 目录,所以仍然没有混合。
      • 是的,可执行文件的目标是 32 位或 64 位。但我希望能够在我们的开发机器上针对这两种架构(仅用于开发,而不是在“客户计算机”上)。
      • 我想最好将编译后的 64 位可执行文件复制到一个文件夹中,然后将 32 位文件复制到另一个文件夹中。在几乎任何开发环境中设置它都是微不足道的,它完全解决了问题。
      猜你喜欢
      • 2011-02-15
      • 2014-03-22
      • 2010-09-11
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      相关资源
      最近更新 更多