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