Un ejemplo con la Estructura 'snd_seq_real_time_t' del fichero 'header' /usr/include/alsa/seq_event.h:
Library "/tmp/libreria"
Private Extern Dim_snd_seq_real_time_t() As Integer
Public Sub Main()
crea_so()
End
Private Procedure crea_so()
Dim nS, s, r, t As String
' Ruta del fichero 'header' que contiene la Estructura:
r = "/usr/include/alsa/seq_event.h"
' Nombre de la Estructura:
nS = "snd_seq_real_time_t"
' Incluye el fichero 'header' que contiene la Estructura:
t = "#include <" & Replace(r, "/usr/include/", Null) & ">"
t &= "\n\n\nint Dim_" & nS & "() {\n" &
" return sizeof(" & nS & ");\n}"
' Muestra el código fuente de la librería .so:
Print t
' Crea el fichero C con el código fuente de la librería .so:
File.Save("/tmp/libreria.c", t)
' Engendra la librería compartida:
Shell "gcc -o /tmp/libreria.so /tmp/libreria.c -shared -lasound" Wait
' Invoca la función externa y muestra el tamaño de la Estructura:
Print "\nTamaño de la Estructura: "; Dim_snd_seq_real_time_t(); " byte"
End
Private Extern Dim_snd_seq_real_time_t() As Integer
Public Sub Main()
crea_so()
End
Private Procedure crea_so()
Dim nS, s, r, t As String
' Ruta del fichero 'header' que contiene la Estructura:
r = "/usr/include/alsa/seq_event.h"
' Nombre de la Estructura:
nS = "snd_seq_real_time_t"
' Incluye el fichero 'header' que contiene la Estructura:
t = "#include <" & Replace(r, "/usr/include/", Null) & ">"
t &= "\n\n\nint Dim_" & nS & "() {\n" &
" return sizeof(" & nS & ");\n}"
' Muestra el código fuente de la librería .so:
Print t
' Crea el fichero C con el código fuente de la librería .so:
File.Save("/tmp/libreria.c", t)
' Engendra la librería compartida:
Shell "gcc -o /tmp/libreria.so /tmp/libreria.c -shared -lasound" Wait
' Invoca la función externa y muestra el tamaño de la Estructura:
Print "\nTamaño de la Estructura: "; Dim_snd_seq_real_time_t(); " byte"
End