【问题标题】:32 and 64 bits libraries: separate file or a single one?32 位和 64 位库:单独文件还是单个文件?
【发布时间】:2009-07-31 13:37:15
【问题描述】:

我需要为客户提供 .dll 的 32 位和 64 位版本。我需要生成2个文件吗?或者一个可以包含两种架构的代码?

对于额外的加分:同样的问题是否适用于 Mac 库?还是通用二进制方法解决了这个问题?

提前致谢

亚历克斯

【问题讨论】:

    标签: dll 64-bit 32-bit


    【解决方案1】:

    您需要提供两个不同的 dll。

    【讨论】:

    • 那将如何与静态库一起工作?我可以将它们都链接到一个exe吗?还是应该有 2 个 exe,一个 32 位和一个 64 位?我迷路了...... :-)
    【解决方案2】:

    我相信您需要提供两个不同的程序集。

    【讨论】:

      【解决方案3】:

      这取决于平台和代码中的内容。

      使用 C/C++/...(本机代码)通常需要不同的文件,但某些平台可能会提供将这些文件打包在一起的方法。

      在“托管/可视化”系统(例如 Java、.NET)中,您可以拥有一个可以以任何方式工作的单个文件(JIT/运行时处理特定于处理器的转换),但使用本机接口(例如 P/Inkvoke ) 在这种情况下可能会失败(例如结构字段偏移量发生变化)。

      【讨论】:

      • “但某些平台可能会提供将这些打包在一起的方法。”你能提供更多关于这方面的细节吗? Windows 上是否存在类似的东西?
      • 不在 Windows 上(据我所知)。对于不难做的EXE:构建64位,以64位作为资源构建32位。在 32 位启动时,如果在 64 位平台上提取资源到文件然后执行它。等待子进程,当它收到信号(退出)时删除文件。显然,这不适用于 dll,因为系统需要能够直接加载正确的二进制文件,除非(如 .NET)您可以创建将加载的“任何 CPU”程序集。
      猜你喜欢
      • 2010-12-28
      • 2015-01-12
      • 2011-02-10
      • 2013-06-02
      • 2013-01-11
      • 1970-01-01
      • 2011-10-13
      • 2013-02-23
      • 1970-01-01
      相关资源
      最近更新 更多