Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 仅部分搜索DLL搜索路径_Delphi_Search_Dll_Path_Environment - Fatal编程技术网

Delphi 仅部分搜索DLL搜索路径

Delphi 仅部分搜索DLL搜索路径,delphi,search,dll,path,environment,Delphi,Search,Dll,Path,Environment,我刚刚安装了一台新的速度更快的计算机作为我的开发站。我在使用Delphi 6 Pro运行应用程序时发现了一个DLL not begin的问题,但我认为问题不在于Delphi。请记住,我的旧计算机上的目录和工具的设置是完全相同的,并且在运行时可以在该计算机上找到DLL。症状似乎是只搜索my PATH环境变量中的一些目录,而最近添加的目录则没有。我已尝试将包含缺少DLL的目录放在当前用户路径中,然后放在系统路径中,但仍然找不到DLL 以下是一些事实: 如果运行命令窗口并查询路径,则路径环境变量中会

我刚刚安装了一台新的速度更快的计算机作为我的开发站。我在使用Delphi 6 Pro运行应用程序时发现了一个DLL not begin的问题,但我认为问题不在于Delphi。请记住,我的旧计算机上的目录和工具的设置是完全相同的,并且在运行时可以在该计算机上找到DLL。症状似乎是只搜索my PATH环境变量中的一些目录,而最近添加的目录则没有。我已尝试将包含缺少DLL的目录放在当前用户路径中,然后放在系统路径中,但仍然找不到DLL

以下是一些事实:

  • 如果运行命令窗口并查询路径,则路径环境变量中会显示DLL的正确路径

  • 如果我把DLL放在一个类似Windows主目录的目录中,就会在运行时找到它

  • 如果我使用Unix风格的“where is”utilty form flounder.com,它会在路径中找到DLL

  • 我在运行时使用(当时是SysInternals,现在是Microsoft的)Process Monitor实用程序监视该程序,以便观察系统搜索DLL的过程。系统确实搜索了路径中10个子目录中的7个子目录,但由于某种原因,正如我上面所说,忽略了其中3个子目录。注意,我知道从路径中剥离了无效目录,但我进行了三次检查,它们确实是有效目录

  • 最后,我创建了一个C:\DUMMY目录,并将该目录添加到PATH环境变量中,当我选中Process Monitor时,该目录也从未被搜索过

这真是我从未见过的奇怪行为。这就好像在对旧路径进行某些修改之前,系统在搜索DLL时使用的旧路径有一个重影副本

有人有解决方案或诊断想法吗


谢谢。

通过删除不必要的路径缩短PATH变量,仅用于测试。我看到在安装了许多喜欢修改路径的软件之后,路径变得太大了。尽管PATH变量包含所有有效路径,但由于路径太多,因此不会搜索末尾的路径。

通过删除不必要的路径缩短路径变量,仅用于测试。我看到在安装了许多喜欢修改路径的软件之后,路径变得太大了。虽然PATH变量包含所有有效路径,但由于路径太多,因此不会搜索末尾的路径。

我昨天遇到了这个问题,我使用了:

SetDLLDirectory(DirectoryPath:PWideChar)
这修复了它,基于NT的操作系统只是表面上


此外,我会检查以确保您没有遗漏分号;(或错误地将其输入为冒号:)从列表中的一个路径名之间输入。

我昨天遇到了这个问题,我使用了:

SetDLLDirectory(DirectoryPath:PWideChar)
这修复了它,基于NT的操作系统只是表面上


此外,我会检查以确保您没有遗漏分号;(或错误地将其输入为冒号:)从列表中的一个路径名之间删除。

如果子目录7或8不正确(非法路径),请尝试使用se。

我见过一些例子,如果发现非法条目,搜索将停止。

如果子目录7或8不相关(非法路径),请尝试使用se。

我看到过一些例子,如果发现非法条目,搜索就会停止。

请确保您正在更改系统路径变量(使用控制面板),然后完全从“刷新”启动任何进程。如果要运行Delphi,请更改路径,然后在调试器中运行应用程序,则不会看到新路径,因为它将继承启动进程的路径,启动进程仍保留旧路径。您应该重新启动Delphi,让它看到新的路径。

确保您正在更改系统路径变量(使用控制面板),然后完全从新启动任何进程。如果要运行Delphi,请更改路径,然后在调试器中运行应用程序,则不会看到新路径,因为它将继承启动进程的路径,启动进程仍保留旧路径。您应该重新启动Delphi,让它看到新的路径。

如何更改路径?如果路径已缓存,最简单的解决方案就是重新启动计算机。当然,我们可以找出问题所在,但值得付出努力吗?如何更改路径?如果路径被缓存,最简单的解决方案就是重新启动机器。当然,我们可以找出问题所在,但这值得付出努力吗?如果操作系统甚至无法加载程序,因为它找不到所需的DLL,那么该函数将没有帮助。程序需要开始运行才能调用它。这是一个很好的观点。当然,我使用动态加载dll’如果操作系统甚至无法加载程序,因为它找不到所需的dll,那么该函数将不会有帮助。程序需要开始运行才能调用它。这是一个很好的观点。我当然使用动态加载dll的