LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Crear una libreria a partir de una DLL

 

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

0 Kudos
Message 1 of 5
(4,311 Views)

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

Francisco Arellano

National Instruments Mexico
Field Systems Engineer - Energy Segment
www.ni.com/soporte
0 Kudos
Message 2 of 5
(4,289 Views)

 

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

0 Kudos
Message 3 of 5
(4,283 Views)

¡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.

 



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 4 of 5
(4,271 Views)

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

 

0 Kudos
Message 5 of 5
(4,254 Views)