Componente de biblioteca de tipo nativeLibrary

Una biblioteca de tipo nativeLibrary permite al código Java generado por EGL invocar una sola DLL que esté ejecutándose localmente. El código para esa DLL no está escrito en el lenguaje EGL. Para obtener información sobre el desarrollo de una biblioteca básica que contiene funciones compartidas y valores que se escriben en lenguaje EGL, consulte la sección Componente de biblioteca de tipo basicLibrary.

En una biblioteca de tipo nativeLibrary, el objetivo de cada función consiste en proporcionar una interfaz a una función DLL. NO puede definir sentencias en la función EGL ni puede declarar variables o constantes en ninguna parte de la biblioteca.

El entorno de ejecución de EGL accede a una función basada en DLL utilizando el valor de la propiedad de función EGL alias que por omisión es el nombre de función EGL. Establezca esa propiedad explícitamente si el nombre de la función basada en DLL no se ajusta a los convenios descrito en la sección Convenios de denominación.

La propiedad de biblioteca callingConvention especifica la forma en que el entorno de ejecución de EGL pasa datos entre las dos clases de código:
El único valor disponible para callingConvention es I4GL:

La propiedad de biblioteca dllName especifica el nombre de DLL, que es final; no puede sobreescribirse durante el despliegue. Si no especifica un valor para la propiedad de biblioteca dllName, debe especificar el nombre de DLL en la propiedad de tiempo de ejecución Java vgj.defaultI4GLNativeLibrary. Solo hay una propiedad de tiempo de ejecución Java tal para una unidad de ejecución, de modo que solo puede especificarse una DLL aparte de las DLL que se identifican en las bibliotecas EGL.

Tanto si especifica el nombre de la DLL durante el desarrollo (en dllName) o durante el despliegue (en vgj.defaultI4GLNativeLibrary), la DLL debe residir en la vía de acceso de directorios identificada en una variable de tiempo de ejecución; esa variable es PATH (en Windows 2000/NT/XP) o LIBPATH (en plataformas UNIX).

Las funciones de biblioteca se declaran automáticamente como públicas para asegurarse de que están disponibles fuera de la biblioteca. En el otro código EGL, puede hacer referencia a una función solamente mediante el nombre de alias de funciones correspondientes, sin especificar el nombre de biblioteca, pero solo si incluye la biblioteca en una declaración de uso específica del programa.

La biblioteca EGL se genera como una clase Java separada del código que accede a la biblioteca y de la DLL. El entorno de ejecución de EGL accede a esa clase utilizando el valor de la propiedad de biblioteca alias, que por omisión toma el valor del nombre de la biblioteca EGL. Establezca esa propiedad explícitamente si el nombre del componente de biblioteca no se ajusta a los convenios de Java.

En tiempo de ejecución, una DLL se carga cuando se utiliza por primera vez y se descarga cuando el programa de acceso o el PageHandler sale de la memoria, tal como ocurre cuando finaliza la unidad de ejecución.

Un PageHandler recibe una nueva copia de la DLL siempre que se carga el PageHandler. Además, una DLL invocada por una biblioteca EGL de tipo basicLibrary permanece en la memoria mientras lo haga la biblioteca invocante.

La biblioteca nativa siguiente proporciona acceso a una DLL escrita en C:
  Library myLibrary type nativeLibrary
  {callingConvention=”I4GL”, dllname=”mydll”}
	
    Function entryPoint1( p1 int nullable in, 
                          p2 date in, p3 time in, 
                          p4 interval in, p5 any out) 
    	end

    	Function entryPoint2( p1 float in, 
                          p2 String in, 
                          p3 smallint out)
    	end

    	Function entryPoint3( p1 any in, 
                          p2 any in, 
                          p3 any out, 
                          p4 CLOB inout)
    	end
  end

Conceptos relacionados
Propiedades de tiempo de ejecución Java
Componente de biblioteca de tipo basicLibrary

Consulta relacionada
Componente de función en formato fuente EGL
Propiedades de ejecución de Java (detalles)
Componente de biblioteca en formato fuente EGL
Convenios de denominación
Unidad de ejecución
Declaración use

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.