2

考虑以下几点:我们在64 位Windows 服务器上安装了32 位Datasnap 服务器

在 embarcadero\rad studio\11.00\redist 中有 2 个文件夹:32 位和 64 位,每个文件夹中都有一个 midas.dll。

我们应该把哪个文件放在哪里?

windows\system32windows\syswow64

4

2 回答 2

5

在 64 位系统上:

  • 64 位系统目录名为System32.
  • 32 位系统目录名为SysWOW64.

如果必须将 DLL 复制到系统目录,请确保将 32 位 DLL 复制到 32 位系统目录,将 64 位 DLL 复制到 64 位系统目录。如果您希望您的应用程序能够找到 DLL,那么这是必不可少的。

由于您的代码是 32 位的,因此您需要使用 32 位 DLL。

但是,您可能应该将 DLL 与可执行文件放在同一文件夹中,因为 Windows 系统目录是私有的并保留供系统使用。应用程序不应修改系统目录。

于 2013-05-14T15:22:54.077 回答
4

永远不要在 Windows 系统目录中放任何东西(除非你有一个非常、非常、非常好的理由写在那里)。

这是一个非常糟糕的做法(可以追溯到 Windows 3.x 时代和糟糕的开发人员技能,因为这些目录总是在搜索路径中)只会导致麻烦(即,如果另一个应用程序在很少或没有检查的情况下用自己的 DLL 更改您的 DLL) . 将 DLL 放在应用程序文件夹中。它将确保您的应用程序使用正确版本的 DLL。或者,如果您出于非常、非常、非常好的理由必须在其他地方编写它,请使用其中一种技术将目录添加到搜索路径或重定向 DLL 加载。

Windows 系统目录必须被视为操作系统私有目录。Windows 没有充分禁止的这种做法往往使 Windows 成为一个缓慢且不稳定的系统。

如果您的应用程序是 32 位的,则无论操作系统如何,您都需要 32 位 DLL。

于 2013-05-14T16:15:27.917 回答