gpt4 book ai didi

dll - 我应该如何命名以 32 位和 64 位形式分发的 native DLL?

转载 作者:行者123 更新时间:2023-12-02 00:41:33 25 4
gpt4 key购买 nike

我有一个商业产品,它是一个 DLL( native 32 位代码),现在是时候构建它的 64 位版本了。所以在 64 位 Windows 上安装时,32 位版本进入 Windows\SysWOW64,而 64 位版本进入... Windows\System32! (我在这里咬舌头......)或者 DLL 可以与客户端应用程序一起安装。

我应该如何命名 64 位 DLL?

与 32 位同名:两个文件做同样的事情,具有相同的名称,但完全不可互换。这不是造成困惑和支持问题的良方吗?

不同的名称(例如 product.dll 和 product64.dll):现在客户端应用程序必须知道它们运行的​​是 32 位还是 64 位才能引用我的 DLL,并且有些语言是未知的直到运行时——.NET 只是一个例子。现在所有静态编译的客户端都必须条件化导入声明:IF target=WIN64 THEN import Blah from "product64.dll"ELSE import Blah from "product.dll"ENDIF

该产品包含大量 C 代码和大量 C++ - 将其移植到 C# 不是一种选择。

建议?有什么建议吗?

最佳答案

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

如果 32 位应用程序尝试从 system32 加载某些内容,操作系统将静默将其重定向到 SysWow64 目录,强制加载 32 位版本。

通过使用不同的名称,您会破坏整个机制。一种专门为允许您使用相同名称而构建的机制。

关于dll - 我应该如何命名以 32 位和 64 位形式分发的 native DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2385480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com