¿Cómo Puedo Cargar y Descargar Dinámicamente un DLL en LabVIEW?



Software Primario:
Versión de Software Primario: 8.2
Versión de Software Primario Corregido: N/A
Software Secundario: N/A

Problema:
Me gustaría cargar mi DLL en memoria solamente cuando es llamado en mi programa y luego descargarlo al final del programa. ¿Es posible?

Solución:
Desde LabVIEW 8.2, los DLLs pueden cargarse y descargarse dinámicamente. El artículo Ayuda de LabVIEW 2013: Call Library Function Node describe el proceso. Como resumen, para cargar un DLL dinámicamente, la opción Specify path on diagram debe estar habilitada en la Ventana de Diálogo de la función Call Library Function Node. La ventana de diálogo puede abrirse al hacer doble clic en la función Call Library Function Node.


Después de habilitar el parámetro Specify path on diagram, una terminal llamada path in aparece en la función. Esta terminal acepta la ruta al DLL que desea llamar. Cuando la función se ejecuta, el DLL especificado en la referencia es cargado en la memoria. Vea la figura a continuación.


La Ayuda de LabVIEW 2013: Call Library Function Dialog Box también dice que la entrada path in puede usarse para descargar una biblioteca previamente cargada a la memoria. Para hacerlo, cablee una ruta vacía o inválida a la entrada path in y LabVIEW descargará cualquier biblioteca previamente utilizada en el nodo que se encuentre en memoria. En otras palabras, debe cablear una constante vacía o nula a la entrada path in de la misma instancia del Call Library Function Node con que llamó al DLL inicialmente. La imagen a continuación muestra un ejemplo. La primera llamada carga el DLL; y el boleano sirve tanto para descargar el DLL como para detener el código. El caso falso, no mostrado, tiene temporización pero no contiene código.

Si una ruta vacía o inválida es cableada a una instancia diferente del Call Library Function Node que se utilizó para llamar el DLL en un inicio, entonces esta no descargará el DLL de la memoria. La imagen a continuación muestra un ejemplo de cómo no debe hacerse.

El ejemplo adjunto (unload dll.vi) muestra cómo cargar y descargar un DLL dinámicamente en un programa. Está basado en una máquina de estados, pero no se está limitado a esta arquitectura.

Nota: La flecha Run del ejemplo está rota. El programa solo está hecho como demostración.



Ligas Relacionadas:
Ayuda de LabVIEW 2013: Call Library Function Dialog Box
Ayuda de LabVIEW 2013: Call Library Function Node
KnowledgeBase 20E8Q8YF: Calling a LabVIEW DLL from within LabVIEW

Archivos Adjuntos:


unload dll.vi - unload dll.vi


Día del Reporte: 03/01/2007
Última Actualización: 07/08/2014
Identificación del Documento: 470ECUMY