代码之家  ›  专栏  ›  技术社区  ›  Spike0xff Suvarna Pattayil

如何命名以32位和64位形式分发的本机DLL?

  •  3
  • Spike0xff Suvarna Pattayil  · 技术社区  · 15 年前

    或者DLL可以与客户端应用程序一起安装。

    我应该如何命名64位DLL?

    与32位同名:两个文件做相同的事情,具有相同的名称,但完全不可互换。这难道不是造成混乱和支持问题的原因吗?

    不同的名称(例如product.dll和product64.dll):现在客户端应用程序必须知道它们是运行32位还是64位才能引用我的dll,有些语言直到运行时才知道-.NET只是一个例子。现在,所有静态编译的客户机都必须对导入声明进行条件化:如果target=WIN64,则从“product64.dll”导入Blah,否则从“product64.dll”ENDIF导入Blah

    该产品包含大量的C代码,并且大量的C++移植到C语言中不是一个选项。

    建议?建议?

    3 回复  |  直到 15 年前
        1
  •  2
  •   doug65536    9 年前

    客户端应用程序 不要 必须“知道”它们是32位还是64位。操作系统会自动从适当的位置加载DLL,因为无法将32位DLL加载到64位进程,也无法将64位DLL加载到32位进程。

    如果32位应用程序 试图 从system32加载一些东西,操作系统会自动将其重定向到SysWow64目录,强制加载32位版本。

    用不同的名字,你就能打败整个机制。专门为允许您使用相同名称而构建的机制。

        2
  •  1
  •   t0mm13b    9 年前

    为什么不在dll前面加下划线。。。例如 产品目录64.dll ? 或者用平台前缀表示- 产品\u x86 \u 32.dll 产品\u x86 \u 64.dll ? 至少这会消除DLL命名的混乱。。。你怎么认为?

        3
  •  0
  •   Spike0xff Suvarna Pattayil    15 年前

    在这方面我决定追随微软,微软在System32中保留了64位DLL的相同名称。在Win7/64上,System32\avicap32.dll是64位dll!

    我自己也有一些潜在的困惑&我的客户,有32位和64位同名DLL。然而,我认为这将是更糟的是,我的所有客户必须使他们的代码字宽度敏感。尤其是.NET开发人员,他们通常可以将目标平台设置为“AnyCPU”。