alberto_moyano escribió: [Ver mensaje]
Yo uso aquella modalidad, también cuando yo necesito escribir y usar recursos del C a través de una librería dinámica .so .
Exemplum minimum:
Library "/tmp/libsonus"
' void Sonus(char *media, char *fl)
' Utiliza la función system() para ejecutar un fichero audio.
Private Extern Sonus(media As Pointer, fl As Pointer)
Public Sub Main()
Dim prog_audio, arch_audio As Pointer
' Va a crear la librería dinámica .so:
CreaSo()
prog_audio = Alloc("totem")
arch_audio = Alloc("/ruta/del/fichero/audio")
' Llama la función "Sonus()" que está en la librería dinámica .so creada,
' para usar la función "system()" que está en la función "Sonus()":
Sonus(prog_audio, arch_audio)
Free(prog_audio)
Free(arch_audio)
End
Private Procedure CreaSo()
Dim s As String
' Escribimos el código en C de la librería dinámica .so que utilizaremos
' para ejecutar un fichero audio con la función "system()":
s = "#include <string>" &
"\n\n" &
"void Sonus(char *media, char *fl) {" &
"\n\n" &
" strcat(media, \" \");\n" &
" strcat(media, fl);\n" &
" system(media);" &
"\n\n}"
File.Save("/tmp/libsonus.c", s)
Shell "gcc -o /tmp/libsonus.so /tmp/libsonus.c -shared -fPIC" Wait
End
' void Sonus(char *media, char *fl)
' Utiliza la función system() para ejecutar un fichero audio.
Private Extern Sonus(media As Pointer, fl As Pointer)
Public Sub Main()
Dim prog_audio, arch_audio As Pointer
' Va a crear la librería dinámica .so:
CreaSo()
prog_audio = Alloc("totem")
arch_audio = Alloc("/ruta/del/fichero/audio")
' Llama la función "Sonus()" que está en la librería dinámica .so creada,
' para usar la función "system()" que está en la función "Sonus()":
Sonus(prog_audio, arch_audio)
Free(prog_audio)
Free(arch_audio)
End
Private Procedure CreaSo()
Dim s As String
' Escribimos el código en C de la librería dinámica .so que utilizaremos
' para ejecutar un fichero audio con la función "system()":
s = "#include <string>" &
"\n\n" &
"void Sonus(char *media, char *fl) {" &
"\n\n" &
" strcat(media, \" \");\n" &
" strcat(media, fl);\n" &
" system(media);" &
"\n\n}"
File.Save("/tmp/libsonus.c", s)
Shell "gcc -o /tmp/libsonus.so /tmp/libsonus.c -shared -fPIC" Wait
End