Llamar a una biblioteca de vínculos dinámicos (DLL) desde LabVIEW

Actualizado el Nov 10, 2020

Ambiente

Software

  • LabVIEW

Lenguaje de Programación

  • C
  • C++
  • C# .NET

Tengo código / API escrito en C / C ++ y quiero poder llamarlo en LabVIEW. Una vez que he creado una biblioteca enlazada dinámicamente (DLL) con mi código C, ¿cómo llamo a la DLL desde LabVIEW?

Para llamar a una DLL, primero debe identificar si la biblioteca es una DLL de C / C ++ o una DLL de Microsoft .NET Assembly / .NET.

Para determinar qué tipo de biblioteca tiene, puede verificar el encabezado Portable Executable (PE) para los archivos DLL.

DLL es una DLL de C / C ++:

  1. Busque el archivo de encabezado (* .h) o las definiciones del prototipo de función; si no tiene un archivo de encabezado, vaya al Paso 4.
  2. Identifique la (s) función (es) que desea llamar. Observe si los parámetros de la función contienen parámetros de tipo de datos primitivos (como int, char, double, etc.) o si contienen tipos de datos complejos (como una estructura, matriz o vector).
  3. Si la función no contiene ningún tipo de datos complejos y tiene un archivo de encabezado (* .h), puede usar el Asistente para importar biblioteca compartida para crear una biblioteca de LabVIEW que contenga las funciones en el archivo de encabezado. Puede encontrar esta opción en Herramientas »Importar » Biblioteca compartida (.dll) ... Continuar con el asistente.
  1. Sin un archivo de encabezado, deberá utilizar el nodo de función de biblioteca de llamadas junto con la documentación adecuada del .DLL. La siguiente imagen muestra la ubicación del nodo de función de biblioteca de llamadas en la paleta:
  1. Haga doble clic en el nodo de función de biblioteca de llamadas para configurar el nodo. En la pestaña Función de la ventana de configuración, ingrese la ruta a la DLL y seleccione la función que desea llamar.
  1. Si las funciones que desea llamar contienen tipos de datos complejos, deberá definir manualmente el prototipo de la función dentro del cuadro de diálogo de configuración en el Nodo de función de la biblioteca de llamadas (si la DLL se ha compilado con una biblioteca de tipos, los datos del parámetro y los tipos de devolución se definirán automáticamente). Navegue a la pestaña Parámetros en la ventana de configuración. Aquí agregará parámetros y modificará el tipo de retorno hasta que el prototipo de función en la parte inferior de la ventana coincida con la definición de función de la DLL.


DLL es un ensamblado .NET:

  1. Para usar un ensamblaje .NET en LabVIEW, simplemente use la paleta .NET (Conectividad ».NET ) para encontrar todas las funciones disponibles.
  2. Primero use un Constructor Node para instanciar una clase dentro del ensamblado .NET. Esto se puede hacer haciendo doble clic en el nodo Constructor para abrir el cuadro de diálogo Seleccionar constructor .NET.

  1. Utilice Property e Invoke Nodes para acceder a las propiedades y métodos de la clase simplemente conectando la referencia de clase desde el Constructor Node a la propiedad o Invoke Node. Esto se muestra en el siguiente fragmento de VI.

Nota: Esta imagen es un fragmento de LabVIEW, que incluye código de LabVIEW que puede reutilizar en su proyecto. Para usar un fragmento, haga clic derecho en la imagen, guárdelo en su computadora y arrastre el archivo a su diagrama de LabVIEW.

Información Adicional

Una DLL .NET también se denomina ensamblado .NET, que es útil en la programación .NET. Una DLL .NET utiliza Common Language Runtime (CLR) y .NET Framework para administrar las funciones dentro de la DLL.

Tenga en cuenta que si su tipo de datos complejos es una estructura con más que tipos de datos primitivos (int, double, char), puede crear una DLL contenedora a partir de un lenguaje basado en C para simplificar las llamadas a funciones.

Las construcciones de C / C ++ no siempre se correlacionan directamente con los tipos de datos de LabVIEW, y una DLL contenedora puede extraer apropiadamente el contenido de la estructura compleja y traducirlos a términos primitivos. Por ejemplo, una DLL que está utilizando utiliza una estructura en C que contiene un char * (una cadena o matriz de caracteres). Su DLL contenedora puede contener una función contenedora con un parámetro char * que coloca el char * en una estructura y, a su vez, llama a la DLL original. En LabVIEW, en su lugar, puede llamar a las funciones DLL contenedoras. Alternativamente, si tiene el código fuente de la DLL, puede modificar directamente la DLL para que tome un char * en lugar de una estructura.

El buscador de ejemplos de LabVIEW tiene ejemplos completos y funcionales de cómo llamar correctamente código externo en LabVIEW. Consulte la ayuda >> Encuentre ejemplos >> Comunicación con aplicaciones externas