外部 DLL 应该位于哪里?

发布于 2025-01-06 06:42:42 字数 259 浏览 1 评论 0原文

假设我在模块的顶部有这个:

Public Declare Function getCustomerDetails Lib "CustomerFunctions" () As Long

如果我从 VB6 IDE 运行程序,CustomerFunctions.dll 应该位于哪里?

如果我正在运行程序可执行文件,CustomerFunctions.dll 应该位于哪里?

Let's say I have this at the top of a module:

Public Declare Function getCustomerDetails Lib "CustomerFunctions" () As Long

If I am running the program from the VB6 IDE, where should CustomerFunctions.dll be located?

If I am running the program executable, where should CustomerFunctions.dll be located?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪我太投入 2025-01-13 06:42:42

当加载标准 DLL(而不是 ActiveX 或 COM DLL)时,Windows 应用以下规则:

如果 SafeDllSearchMode 打开:

  1. 程序目录。
  2. 系统目录。 (Windows\System32 或 Windows\SysWow64,具体取决于您是否在 64 位上运行)。
  3. 16 位系统目录 (Windows\System)。
  4. Windows 目录。
  5. 当前目录。
  6. PATH 环境变量中的所有目录。

如果禁用 SafeDllSearchMode,则搜索顺序如下:

  1. 程序目录。
  2. 当前目录。
  3. 系统目录。 (Windows\System32 或 Windows\SysWow64,具体取决于您是否在 64 位上运行)。
  4. 16 位系统目录 (Windows\System)。
  5. Windows 目录。
  6. PATH 环境变量中的所有目录。

我个人的偏好(而不是乱扔系统或 Windows 目录)是在某处创建developmentDLLs 目录并将其添加到 PATH 变量。分发应用程序时,将 DLL 放置在程序的 App 目录中。这样你干扰其他 DLL 的机会就最小了。有关加载 DLL 的完整信息,请参阅 MSDN

When loading a standard DLL (rather than an ActiveX or COM dll), Windows applies the following rules;

If SafeDllSearchMode is turned on:

  1. The Program directory.
  2. The system directory. Either (Windows\System32 or Windows\SysWow64 depending if you are running on 64 bit or not).
  3. The 16-bit system directory (Windows\System).
  4. The Windows directory.
  5. The current directory.
  6. All directories that in the PATH environment variable.

If SafeDllSearchMode is disabled, the search order is as follows:

  1. The Program directory.
  2. The current directory.
  3. The system directory. Either (Windows\System32 or Windows\SysWow64 depending if you are running on 64 bit or not).
  4. The 16-bit system directory (Windows\System).
  5. The Windows directory.
  6. All directories that in the PATH environment variable.

My personal preference (rather than litter the System or Windows directory) is to create a developmentDLLs directory somewhere and add it to the PATH variable. When distributing the application place the DLL in the program's App directory. This way you have the least chance of interferring with other DLL's. For complete information on the loading of the DLL's see the MSDN.

遗心遗梦遗幸福 2025-01-13 06:42:42

由于这不是 ActiveX DLL,因此适用的规则略有不同。

  • 在 IDE 中运行时,您可以将其放置在 c:\windows\system32 中或 VB6 运行的目录中(例如 c:\program files\microsoft Visual Studio... )。
  • 在 VB6 之外运行程序可执行文件时,可以将 DLL 放入 c:\windows\system32 或应用程序目录中。

请记住,我给了您一个技术答案(例如,将文件放入 c:\windows\system32),这将起作用。然而,过去十年的趋势是将必要的组件隔离到应用程序目录中。

Since this is not an ActiveX DLL, somewhat different rules apply.

  • When running in the IDE you could place it in either c:\windows\system32 or in the directory from which VB6 is running (e.g. c:\program files\microsoft visual studio...).
  • When running the program executable outside of VB6, you can place the DLL into either c:\windows\system32 or the application directory.

Keep in mind that I gave you a technical answer (e.g. placing the file into c:\windows\system32), which will work. However, the trend in the last decade has been to isolate the necessary components into the application directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文