Librería externa

Este objeto visual permite declarar una librería de enlace dinámico externa y sus funciones, a las que podremos invocar desde distintos puntos del proyecto. Para crear un objeto de este tipo seleccionar la opción nuevo objeto/librería externa del menú objetos de Velneo vDevelop o a través de la galería de objetos.

Propiedades

Identificador

Etiqueta alfanumérica que identifica de forma unívoca al objeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.

Constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un objeto no puede haber duplicidad.

Nombre

Nombre de la librería externa; ha de ser el nombre del archivo sin la extensión.

Estilos

Podemos definir el estilo siguiente:

Privado

Limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.

Comentarios

Esta propiedad nos permite documentar el uso del objeto.

Convención

Esta propiedad nos permite especificar el sistema de convención de llamada a la librería. Los valores posibles son:

  • C_DEFAULT

  • C_X86_DEFAULT

  • C_X86_WIN32_STD

  • C_X86_WIN32_FAST_MS

  • C_X86_WIN32_FAST_GNU

  • C_X86_WIN32_THIS_MS

  • C_X86_WIN32_THIS_GNU

  • C_X64_WIN64

  • C_X64_SYSV

  • C_PPC32_DARWIN

  • C_ARM_ARM

  • C_ARM_THUMB

  • C_MIPS32_EABI

  • C_MIPS32_PSPSDK

Funciones

Esto hará que se añada el nuevo sub-objeto función al panel de sub-objetos.

Para editar sus propiedades, haremos doble clic sobre ella. Son:

Identificador

Etiqueta alfanumérica que identifica de forma unívoca al subobjeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.

Constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca al sub-objeto no puede haber duplicidad dentro del mismo objeto.

Nombre

Nombre de la función a declarar de la librería externa.

Estilos

Podemos definir los estilos:

Privado

Limita el acceso del usuario final a cierta información sobre el objeto.

Heredable

Permite que el objeto sea usado cuando la caja sea heredada.

Comentarios

Esta propiedad nos permite documentar el uso del objeto.

Retorno

Especificación del tipo de dato de retorno. Los valores posibles son:

  • void

  • char

  • unsigned char

  • short

  • unsigned short

  • int

  • long

  • unsigned long

  • long long

  • unsigned long long

  • bool

  • float

  • double

  • const void*

  • const char*

  • const unsigned char*

  • const short*

  • const unsigned short*

  • const int*

  • const unsigned int*

  • const long*

  • const unsigned long*

  • const long* long*

  • const unsigned long* long*

  • const bool*

  • const float*

  • const double*

Convención

Esta propiedad nos permite especificar el sistema de convención de llamada a la función de la librería. Los valores posibles son:

  • C_DEFAULT

  • C_X86_DEFAULT

  • C_X86_WIN32_STD

  • C_X86_WIN32_FAST_MS

  • C_X86_WIN32_FAST_GNU

  • C_X86_WIN32_THIS_MS

  • C_X86_WIN32_THIS_GNU

  • C_X64_WIN64

  • C_X64_SYSV

  • C_PPC32_DARWIN

  • C_ARM_ARM

  • C_ARM_THUMB

  • C_MIPS32_EABI

  • C_MIPS32_PSPSDK

Parámetros de función

Esto hará que se añada el nuevo sub-objeto parámetro de función al panel de sub-objetos.

Para editar sus propiedades, haremos doble clic sobre ella. Son:

Identificador

Etiqueta alfanumérica que identifica de forma unívoca al objeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.

Constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un objeto no puede haber duplicidad.

Nombre

Nombre del parámetro de la función de la librería externa.

Estilos

Podemos definir los estilos:

Privado

Limita el acceso del usuario final a cierta información sobre el objeto.

Heredable

Permite que el objeto sea usado cuando el proyecto sea heredado.

Comentarios

Esta propiedad nos permite documentar el uso de sub- objeto.

Tipo

Especificación del tipo de dato del parámetro. Los valores posibles son:

  • void

  • char

  • unsigned char

  • short

  • unsigned short

  • int

  • long

  • unsigned long

  • long long

  • unsigned long long

  • bool

  • float

  • double

  • const void*

  • const char*

  • const unsigned char*

  • const short*

  • const unsigned short*

  • const int*

  • const unsigned int*

  • const long*

  • const unsigned long*

  • const long* long*

  • const unsigned long* long*

  • const bool*

  • const float*

  • const double*

Notas

Si nuestra aplicación va a hacer uso de una librería externa que debamos suministrar a los clientes que la ejecuten, podremos usar el objeto Fichero adjunto para distribuirla de forma automática.

Podremos hacer la llamada a funciones de librerías externas declaradas tanto en el proyecto en curso como en proyectos heredados desde cualquier objeto o subobjeto donde pueda declararse una fórmula.

El acceso a librerías externas utiliza los tipos de datos de C/C++ para comunicarse. Esto facilita el uso de librerías entre distintos sistemas operativos, ya que se trata de tipos de datos comunes en todas las plataformas.

Desde proyectos de Velneo podremos hacer uso de librerías en las que se pasen parámetros por valor o constantes tipo * (de aquellos tipos que tenemos definidos en Velneo vDevelop), pero no variables por referencia; es decir, que para obtener información de la librería siempre debemos hacerlo a través del valor de retorno.

Desde proyectos de Velneo no podremos hacer uso de librerías que manejen estructuras.

Con el fin de garantizar tanto la estabilidad como la seguridad de Velneo vServer el acceso a librerías externas desde procesos ésta permitido solamente en procesos ejecutados en primer o segundo plano (ejecución en cliente), no siendo posible hacer llamadas a librerías externas desde procesos ejecutados en tercer plano (en el servidor). Este objeto siempre debe ser creado dentro de un proyecto de aplicación; ya que, en la versión actual, las librerías declaradas en proyecto de datos no son funcionales.

La arquitectura de la librería ha de ser coincidente con la de Velneo vClient, es decir, que desde un Velneo vClient de 64 bits solamente podremos hacer llamadas a librerías de 64 bits; no podremos hacer llamadas a librerías de 32 bits.

Cambios requeridos en librerías externas para su uso en Velneo

En próximas versiones, el uso de librerías externas en Windows requerirá la configuración y activación de nuevos parámetros requeridos por Microsoft para mejorar la seguridad de las aplicaciones en Velneo.

Por favor, comprueba ya que las librerías externas que usas soportan esta configuración y comienza ya a trabajar en la adaptación en caso contrario.

Debemos desactivar la directiva Fixed Base Address (No /FIXED:NO) y debemos activar la directiva RandomizedBaseAddress (Yes /DYNAMICBASE) en la compilación de la librería en el caso de que queramos usar esta librería con Velneo.

¿Cómo puedo comprobar si mi librería funcionará?

Para comprobar si tu librería será funcional en próximas versiones, puedes hacerlo ya usando Velneo vClient con este instalable de la versión 29.0, y SOLO con este:

https://dl.velneo.com/velneo/29/velneo-win64-vclient-setup-29.0.4.exe

https://dl.velneo.com/velneo/29/velneo-win32-vclient-setup-29.0.4.exe

Si no funciona la librería con la versión 29.0 pero sí te funciona con la versión 29.1, entonces es que debes configurarla como indicamos. Si te funciona correctamente, es que soporta ya estas configuraciones.

Una vez hechas las configuraciones requeridas, puedes volver a comprobarlo con la versión 29.0 que te hemos ofrecido para descargar.