指定路径中可执行文件找不到DLL

更新 Jul 31, 2023

适用于

软件

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

问题详述

当我使用一个VI调用库函数节点调用DLL。在开发环境中,DLL能够正确在指定路径调用,应用程序正常运行。当创建可执行文件时,系统会提示要在指定路径下找到对应的DLL。如何防止出现该提示?

解决方案

可执行文件仅在某些目录中查找DLL。 Windows将按以下位置顺序搜索的DLL:
  1. 运行可执行文件的当前目录
  2. Windows系统目录( <Windows>\System32
  3. PATH环境变量中指定的任何路径
默认情况下,LabVIEW会将使用调用库函数节点调用的大多数DLL,并复制到可执行文件的data目录中。

相关信息

如果您在应用程序中使用user32.dll或其他WinAPI DLL并且未正确指定磁盘库的位置,那么在运行可执行文件时可能会收到以下错误: Entry Point Not Found: The procedure entry point wcscat_s could not be located in the dynamic link library ntdll.dll 。当您创建调用共享库的可执行文件时,LabVIEW会在创建的data支持目录中包含DLL的本地副本。当可执行文件运行时,LabVIEW运行引擎首先在此目录中搜索共享库。在这种操作下,运行引擎将在部署计算机上调用错误版本的WinAPI DLL,这可能会导致各种各样的问题。

如果要调用位于系统目录中的WinAPI DLL,则有三种方法:
  • 在调用库函数节点中输入DLL文件名本身,但不包含其路径。这将避免在创建应用程序时在data目录中创建DLL的副本。
  • data目录中删除WinAPI DLL。现在,可执行文件在每次运行时都会搜索DLL。通过将<Windows>\System32文件夹添加到可执行文件的VI搜索路径( 工具»选项»路径»VI搜索路径 )来解决此问题。
  • 从“调用库函数节点”的对话框中选择“ 在图表上指定路径” ,并将共享库的路径硬编码到程序框图输入的路径