Vb6 外部DLL应该位于哪里?

Vb6 外部DLL应该位于哪里?,vb6,path,Vb6,Path,假设我在模块顶部有一个: Public Declare Function getCustomerDetails Lib "CustomerFunctions" () As Long 如果我是从VB6 IDE运行程序,那么CustomerFunctions.dll应该位于哪里 如果我正在运行程序可执行文件,那么CustomerFunctions.dll应位于何处?由于这不是ActiveX dll,因此应用了一些不同的规则 在IDE中运行时,可以将其放置在c:\windows\system32或

假设我在模块顶部有一个:

Public Declare Function getCustomerDetails Lib "CustomerFunctions" () As Long
如果我是从VB6 IDE运行程序,那么
CustomerFunctions.dll
应该位于哪里


如果我正在运行程序可执行文件,那么
CustomerFunctions.dll应位于何处?

由于这不是ActiveX dll,因此应用了一些不同的规则

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

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

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

如果启用了SafedlSearchMode:

  • 程序目录
  • 系统目录。或者(Windows\System32或Windows\SysWow64,取决于您是否在64位上运行)
  • 16位系统目录(Windows\system)
  • Windows目录
  • 当前目录
  • PATH环境变量中包含的所有目录
  • 如果禁用了SafedlSearchMode,则搜索顺序如下:

  • 程序目录
  • 当前目录
  • 系统目录。或者(Windows\System32或Windows\SysWow64,取决于您是否在64位上运行)
  • 16位系统目录(Windows\system)
  • Windows目录
  • PATH环境变量中包含的所有目录

  • 我个人的偏好(而不是乱扔系统或Windows目录)是在某处创建一个developmentdll目录并将其添加到变量中。分发应用程序时,请将DLL放在程序的应用程序目录中。这样,您就不会与其他DLL发生冲突。有关加载DLL的完整信息,请参阅。

    DLL大部分时间都放在Systems文件夹中。。C:/Windows/System32为例。。并在注册处注册。同时检查您的引用。@PhilipBadilla:这是一个第三方DLL。是的,但您是引用它的人吗?@PhilipBadilla:是的,我已经得到了DLL,我想在模块中引用它。我应该把DLL放在哪里?哪个文件夹?@Philip:No,除非是系统文件,否则最好在系统文件夹中放置任何内容。您创建的DLL绝对不是系统文件。系统文件夹不是你的,因此它被命名为“Windows”而不是“YourApp”。只需将DLL放入您自己的应用程序文件夹中,或者如果您有多个应用程序共享DLL,请将其放入“Program Files”文件夹中您产品的公用文件夹中。(注意这个名字叫“程序文件”,意思是指与程序相关的文件?就是你!一个程序!)我认为“十年”是一个保守的估计。。。Windows XP已经有十多年的历史了,在XP.+1之前很久就不乱扔系统文件夹已经是一种“潮流”,因为在VB6 IDE中运行时,它在“应用程序目录”(包含VBP.+1的目录)中找不到DLL。在开发PCA的路径上有一个DLL目录的好主意可执行文件可以使用清单来指定激活上下文,即使是标准DLL,例如,
    将指示
    加载库EXW
    仅在主可执行文件文件夹下的
    外部
    子文件夹中搜索
    CustomerFunctions.DLL
    。此外,如果文件名包含(部分)路径,
    LoadLibrary
    不会进行搜索,但会失败。