外部DLL应该放在哪里?

时间:2012-02-16 06:04:46

标签: vb6 path

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

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

如果我从VB6 IDE运行程序,应该在哪里找到CustomerFunctions.dll

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

2 个答案:

答案 0 :(得分:3)

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

如果启用了SafeDllSearchMode:

  1. 程序目录。
  2. 系统目录。 (Windows \ System32或Windows \ SysWow64取决于您是否运行64位)。
  3. 16位系统目录(Windows \ System)。
  4. Windows目录。
  5. 当前目录。
  6. PATH环境变量中的所有目录。
  7. 如果禁用SafeDllSearchMode,搜索顺序如下:

    1. 程序目录。
    2. 当前目录。
    3. 系统目录。 (Windows \ System32或Windows \ SysWow64取决于您是否运行64位)。
    4. 16位系统目录(Windows \ System)。
    5. Windows目录。
    6. PATH环境变量中的所有目录。
    7. 我的个人偏好(而不是乱丢系统或Windows目录)是在某处创建developmentDLLs目录并将其添加到PATH变量。分发应用程序时,将DLL放在程序的App目录中。这样你就有可能干扰其他DLL。有关加载DLL的完整信息,请参阅MSDN

答案 1 :(得分:2)

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

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

请注意,我向您提供了技术答案(例如将文件放入c:\windows\system32),这将有效。但是,过去十年的趋势是将必要的组件隔离到应用程序目录中。