lang • extdecl

Declaración de Funciones Externas

{ PUBLIC | PRIVATE } EXTERN Identificador ( [ Parámetro AS TipoDato [ , ... ] ] ) [ AS TipoDato ] [ IN Librería ] [ EXEC Alias ]

Declara una función externa situada en una librería compartida del sistema.

Argumentos

Los parámetros de una función externa, pueden ser de cualquier tipo Gambas, salvo Variant. Gambas convertirá automáticamente estos tipos de datos a los internos de la máquina.

Al pasar un objeto, la función recibe un puntero a sus datos. Si el objeto es una clase, la función recibe un puntero a los datos estáticos de la clase.

Respecto a los punteros, consulte el tipo de dato Pointer.

Puede utilizar argumentos tipo String, salvo que la función los modifique, ya que los valores tipo Gambas String pueden ser compartidos.

Valor devuelto

El valor devuelto por una función externa puede ser de cualquiera de los tipos Gambas, salvo Object y Variant.

Si una función externa devuelve una cadena, Gambas devolverá una copia de ella.

Si necesita una cadena real devuelta por la función, emplee el tipo Pointer y la función StrPtr.

Nombre de la librería

El nombre de la librería se especifica con el argumento Librería. Si no lo especifica, se empleará el nombre indicado en la última declaración hecha con LIBRARY.

El nombre de la librería debe ser el del archivo que la contiene sin ninguna extensión o número de versión.

Por ejemplo, para emplear la librería de OpenGL llamada libGL.so.1 en su sistema, el nombre que usará en Gambas es "libGL".

Si necesita especificar el número de versión de la librería (los números después de la extensión .so en sistemas GNU/Linux), puede añadirlo tras el nombre de la librería, separado por el signo de dos puntos.

Por ejemplo, si necesita específicamente la versión 1.0.7667 de la librería OpenGL, puede indicar este nombre: "libGL:1.0.7667".

Examples

' ¡Necesito realizar algunos ioctl!
Extern ioctl(fd As Integer, op As Integer, arg As Pointer) As Integer In "libc:6"

...

Err = ioctl(MyStream.Handle, ...)

Nombre de la Función

El nombre del la función en la librería por defecto es el mismo que el de la función en Gambas, es decir, Identificador.

Si no es posible, o deseable, puede especificar el nombre real de la función en la librería con la palabra clave EXEC.

Examples

' ¡Este nombre de función ya está reservado en Gambas!
Extern SysOpen(Name As String, Flags As Integer, Mode As Integer) As Integer In "libc:6" Exec "open"

Véase también