外部 DLL 应该位于哪里?

CJ7*_*CJ7 5 vb6 path

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

Public Declare Function getCustomerDetails Lib "CustomerFunctions" () As Long
Run Code Online (Sandbox Code Playgroud)

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

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

Kri*_*son 5

当加载标准 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