El Ejecutable No Puede Encontrar Mi DLL Incluso Con Una Ruta Especificada

Actualizado el Jul 31, 2023

Reportado en

Software

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

Detalles del problema

Tengo un VI que llama a un archivo .DLL con el Call Library Function Node. En el entorno de desarrollo, el DLL se llama correctamente y la aplicación funciona como esperaba. Cuando construyo un ejecutable, me piden que busque el DLL. ¿Cómo puedo evitar que aparezca el aviso?

Solución

Los ejecutables solo buscan en algunos directorios una DLL. Windows buscará las siguientes ubicaciones para su DLL:
  1. El directorio actual desde el que se ejecuta el ejecutable
  2. El directorio del sistema de Windows ( <Windows>\System32 )
  3. Cualquier ruta especificada en la variable de entorno PATH.
De forma predeterminada, LabVIEW copiará la mayoría de los archivos DLL que se llaman con el Call Library Function Node en el directorio de data del ejecutable.

Información adicional

Si está utilizando user32.dll u otro DLL de WinAPI en su aplicación y no especifica correctamente la ubicación de la biblioteca en el disco, puede recibir el siguiente error al intentar ejecutar su archivo ejecutable: Entry Point Not Found: The procedure entry point wcscat_s could not be located in the dynamic link library ntdll.dll . Cuando crea un archivo ejecutable que llama a una biblioteca compartida, LabVIEW incluye una copia local de la DLL en el directorio de soporte de data de la compilación. Cuando se ejecuta el ejecutable, el motor de tiempo de ejecución de LabVIEW busca primero la biblioteca compartida en este directorio. Al hacerlo, el motor de tiempo de ejecución llamará a la versión incorrecta de la DLL de WinAPI en su computadora de implementación, lo que puede causar una gran variedad de problemas.

Si está llamando a una DLL de WinAPI ubicada en el directorio del sistema, tiene tres opciones:
  • Ingrese el nombre del archivo DLL sin su ruta en el Call Library Function Node. Esto evitará que se cree una copia del DLL en el directorio de data al crear la aplicación.
  • Eliminar el DLL de WinAPI del directorio de data . El ejecutable ahora buscará el DLL cada vez que inicie el ejecutable. Solucione esto agregando la carpeta <Windows>\System32 a las rutas de búsqueda de VI (Tools»Options»Paths»VI Search Path) del ejecutable.
  • Elija Specify path on diagram desde dentro del cuadro de diálogo del Call Library Function Node y codifique la ruta de la biblioteca compartida a la entrada path in en el diagrama de bloques.