2015-10-12 9 views
5

Atronix Rebol 3 FFI sembra essere abbastanza buono per il wrapping di funzioni esterne, ma non riesco a trovare alcun riferimento sul wrapping di variabili esterne che lo utilizzano.Wrapping delle variabili condivise utilizzando Rebol 3 FFI

Per esempio, la biblioteca Maledizioni/ncurses hanno la stdscr variabile esterna definita in C come

extern WINDOW *stdscr; 

voglio usare nel mio codice Rebol. Idealmente, voglio usarlo come una variabile Rebol comune, ma un accesso di sola lettura (come risultato di una chiamata di funzione, ad esempio) sarebbe ottimo.

E 'possibile con Rebol 3 FFI?

So che questa pratica può essere considerata dannosa, ma a volte le librerie esterne sono scritte in questo modo.

+0

A mio modesto caso ho appena avvolto ** ** stdscr come si è fatto in rosso/Il sistema impreca il binding, ma il problema è ancora aperto. –

risposta

3

È possibile farlo con commit. binari precompilati possono essere scaricati da here (solo nelle versioni di sviluppo)

Ecco il codice di esempio:

rebol [] 

ncurses: make library! %libncursesw.so 

stdscr: make struct! compose/deep [ 
    [ 
     extern: [(ncurses) "stdscr"] 
    ] 
    ptr [pointer] 
] 

print ["stdscr:" stdscr/ptr] 
close ncurses