使用Rebol 3 FFI包装共享变量

Iva*_*kin 5 rebol rebol3

Atronix Rebol 3 FFI在包装外部函数方面看起来相当不错,但我找不到任何关于使用它包装外部变量的引用.

例如,Curses/NCurses库具有在C中定义的外部变量stdscr

extern WINDOW *stdscr;
Run Code Online (Sandbox Code Playgroud)

我想在我的Rebol代码中使用它.理想情况下,我想将它用作常见的Rebol变量,但是只读访问(例如,作为函数调用的结果)也会很棒.

Rebol 3 FFI有可能吗?

我知道这种做法可能被认为是有害的,但有时外部库是以这种方式编写的.

Shi*_*eng 3

您可以通过commit来完成此操作。可以从此处下载预构建二进制文件(仅在开发版本中)

这是示例代码:

rebol []

ncurses: make library! %libncursesw.so

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

print ["stdscr:" stdscr/ptr]
close ncurses
Run Code Online (Sandbox Code Playgroud)