DLL - Consejos
Tenga en cuenta los siguientes consejos al escribir una DLL:
Utilice la convención de llamada adecuada (C o stdcall).
Tenga en cuenta el orden correcto de los argumentos pasados a la función.
NUNCA cambie el tamaño de las matrices o concatene cadenas utilizando los argumentos pasados directamente a una función. Recuerde, los parámetros que pasa son datos de LabVIEW. Cambiar el tamaño de una matriz o de una cadena puede resultar en un bloqueo al sobrescribir otros datos almacenados en la memoria de LabVIEW. PUEDE cambiar el tamaño de las matrices o concatenar cadenas si pasa un LabVIEW Array Handle o LabVIEW String Handle y está utilizando el compilador Visual C ++ o el compilador Symantec para compilar su DLL.
Mientras pasa cadenas a una función, seleccione el tipo correcto de cadena para pasar. Manejador de cadena en C o Pascal o LabVIEW.
Las cadenas de Pascal están limitadas a 255 caracteres de longitud.
Las cadenas C terminan en NULL. Si su función DLL devuelve datos numéricos en un formato de cadena binaria (por ejemplo, a través de GPIB o el puerto serie), puede devolver valores NULL como parte de la cadena de datos. En tales casos, pasar matrices de enteros cortos (8 bits) es más confiable.
Si está trabajando con matrices o cadenas de datos, SIEMPRE pase un búfer o matriz que sea lo suficientemente grande como para contener cualquier resultado colocado en el búfer por la función a menos que los esté pasando como identificadores de LabVIEW, en cuyo caso puede cambiar su tamaño usando CIN funciona bajo el compilador Visual C ++ o Symantec.
Enumere las funciones de DLL en la sección EXPORTACIONES del archivo de definición del módulo si está utilizando _stdcall.
Enumere las funciones DLL que otras aplicaciones llaman en la sección EXPORTS del archivo de definición de módulo o para incluir la palabra clave _declspec (dllexport) en la declaración de función.
Si usa un compilador de C ++, exporte las funciones con la instrucción .C. {} Externa en su archivo de encabezado para evitar alterar los nombres.
Si está escribiendo su propia DLL, no debería volver a compilar una DLL mientras otra aplicación la carga en la memoria. Antes de volver a compilar una DLL, asegúrese de que todas las aplicaciones que utilizan esa DLL en particular se descarguen de la memoria. Asegura que la DLL en sí no se cargue en la memoria. Es posible que no pueda reconstruir correctamente si olvida esto y su compilador no le advierte.
Pruebe sus DLL con otro programa para asegurarse de que la función (y la DLL) se comporten correctamente. Probarlo con el depurador de su compilador o un programa C simple en el que puede llamar a una función en una DLL le ayudará a identificar si las posibles dificultades son inherentes a la DLL o LabVIEW relacionadas.