Cómo llamar a la biblioteca de enlaces dinámicos en LabVIEW
En LabVIEW, los arreglos unidimensionales, los arreglos bidimensionales y las cadenas pueden corresponder directamente a los tipos de datos correspondientes en C/C++, por lo que son relativamente fáciles de implementar. Entonces, para estructuras en C/C++, también pensaremos en clusters en LabVIEW que pueden corresponder, pero en aplicaciones específicas habrá algunos detalles involucrados, a los que debemos prestar atención; de lo contrario, es probable que la llamada no tenga éxito, o incluso causado por lecturas y escrituras ilegales de la memoria. Además, los valores de retorno en LabVIEW son solo valores numéricos, cadenas y punteros, entonces, ¿qué debemos hacer cuando el valor de retorno de una función en una DLL es una estructura? ¿Qué hacer cuando los parámetros de entrada contienen punteros a funciones?
Antes de discutir estos temas, recomendamos aquí cuatro documentos. Son largos y breves, pero todos están escritos con gran detalle:
1) Cómo utilizar el nodo de función de biblioteca. llamándolo DLL: configure el nodo de función de biblioteca de llamada para llamar a un enlace DLL simple: /content/docs/DOC-9069
2) Si es un tipo de datos simple (por ejemplo, valor numérico, matriz , cadena, DLL simple), luego, al llamar al nodo de función de la biblioteca, debe usar una DLL simple. Si se trata de un tipo de datos simple (como un número, matriz, cadena, estructura simple), LabVIEW puede analizarlo automáticamente de forma correcta. al pasar o recibir punteros entre LabVIEW y el puntero DLL. --Transmitir y recibir punteros entre LabVIEW y C/C++ DLL Enlace: /content/docs/DOC-9080
3) Dado que LabVIEW oculta la administración de memoria, no proporciona funciones abiertas para acceder a memoria específica. Dado que LabVIEW oculta la administración de memoria, no existe una función abierta que proporcione acceso directo a una dirección de memoria específica, entonces, ¿qué hacer cuando se devuelve un puntero desde C/C++ y LabVIEW no puede resolver automáticamente el puntero? - Desreferenciación de una DLL de C/C++ en Enlace de puntero de LabVIEW:/content/docs/DOC-9091
4) Introduzca el Asistente para importar biblioteca compartida Cuando obtenemos una DLL y su archivo de encabezado (.h), podemos usar esta herramienta para importar cada uno. parte de la DLL. Se genera automáticamente un subVI para cada función. La mayor ventaja es que no es necesario configurar manualmente un subVI para cada función. El mayor beneficio es que no es necesario configurar manualmente los parámetros de entrada/salida y la coincidencia de tipos. Por supuesto, también tiene algunas limitaciones, como la imposibilidad de hacer coincidir tipos complejos: use el Asistente de importación de biblioteca compartida para crear un paquete VI para. Funciones DLL de C/C++ Enlace: /content/docs /DOC-9078
5) También puede ir directamente al tema usando este documento, porque está muy bien escrito y contiene VI y C/ detallados. Código fuente C++ y tiene un índice de directorio que puede responder las siguientes preguntas Preguntas: 1) Número 2) Matriz unidimensional 3) Cadena 4) Matriz bidimensional 5) Estructura simple 6) Estructura compleja. Cada caso, en orden: Valor de retorno, Puntero de retorno, Valor de paso, Puntero de paso - Llamada a archivos DLL de C/C++ que contienen tipos de datos simples y complejos desde LabVIEW Enlace: /content/docs/ DOC-9079 (Al revisar estas llamadas de VI, tenga en cuenta asegúrese de consultar el código original en C/C++ para una mayor comprensión, que se puede descargar en su enlace)
Sin embargo, en este documento, hay varios lugares donde se producirán errores en tiempo de ejecución, como se muestra a continuación: Representación :
1. Matriz bidimensional - c. Función de paso de parámetro (pasar por valor)
2. Estructura simple: a.
3.