04-17-2013 11:43 AM
Estoy tratando de crear una Libreria para usar las funciones de una DLL.
Como puedo generar esta libreria? Ya que no tengo el .h de la DLL.
Gracias
04-19-2013 12:25 PM
Que tal;
Para crear el set de VIs para llamar a la DLL sí es necesario tener el archivo *.h para que LabVIEW pueda identificar las distintas entradas y salidas de las funciones que vienen dentro de la DLL. Pero no es la única manera de acceder a las funciones dentro de una DLL.
Otra manera en la que puedes tener acceso a las funciones es utilizando el Call Library Function Node, ahí tendrías que navegar hasta tu DLL y decirle que función quieres utilizar. Algo importante del Call Library Function Node es que tienes que conocer los parámetros de la función, porque dentro de él se configura que tipo de datos recibe, cuales son puntero, cuantos son, etc.
Agrego dos documentos para que te des una idea de como hacerlo..
http://digital.ni.com/public.nsf/allkb/883A27CA6FA32E8186257498005D2DA0?OpenDocument
http://www.ni.com/pdf/manuals/370109b.pdf
Suerte
04-19-2013 01:29 PM
Buen día Francisco,
Te comentó que olvidé incluir un detalle muy importante. Estoy tratando de usar la DLL desde CVI, no desde LabVIEW como lo comentas tú.
Ya hice un pequeño codigo para acceder de manera explícita pero lamentablemente no es funcional para mi aplicación.
¿Creés que exista alguna otra forma de poder acceder a las funciones de la DDL (de forma implícita) pero sin tener el archivo header?
Gracias por responder y quedo a la espera de tus comentarios.
Saludos
04-20-2013 01:47 AM - edited 04-20-2013 01:49 AM
¡Hola, Luis!
Hay dos maneras de acceder a las funciones de una dll: con una conexión estática (o sea realizada cuando creas el programa, creo que es lo que tu indicas como forma implícita) u dinámica (cada vez que lo ejecutas, forma esplícita).
Para la primera necesitas el archivo .h y una librería (.lib) que puedes crear en el CVI a partir del .h como está descrito en esta página. La otra manera es realizada a traves de llamadas a funcioned del SDK y la tienes descrita aquí. Lamentablemente ambos métodos necesitan del archivo .h, sin el cual nada puede hacerse de manera automática.
Ahora bien, hay programas (por ejemplo el Dependency Walker) que pretenden proporcionar informaciones acerca de las funciones incluídas en DLL u LIB, a partir de las cuales podrías intentar construir el archvo .h asociado a la DLL, pero yo nunca los he utilizados en tal sentido por lo que no puedo darte informaciones; siun embargo tengo la impresión de que no sea una tarea muy fácil.
Creo que lo mejor sería consultar al proveedor de la DLL para ver si puedes obtener el include file (y la import library .lib si es posible) junto a informaciones detalladas sobre las funciones incluidas y los parámetros de cada una, elementos muchas veces necesarios para utilizarlas sin problemas.
04-22-2013 09:56 AM
Que tal Roberto!
Gracias por tus comentarios.
Efectivamente seguiré tu consejo y voy a tratar de hablar con el proveedor de la DDL y así facilitar la implementación.
Espero no tener problemas para conseguir los archivos.
Muchas gracias por tu apoyo.
Saludos