使用 Rebol 3 FFI 包装共享变量

Wrapping shared variables using Rebol 3 FFI

A​​tronix Rebol 3 FFI 在包装外部函数方面看起来很不错,但我找不到任何关于使用它包装外部变量的参考资料。

例如,Curses/NCurses 库在 C 中定义了外部变量 stdscr 为

extern WINDOW *stdscr;

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

Rebol 3 FFI 可以吗?

我知道这种做法可能被认为是有害的,但有时外部库就是这样写的。

您可以使用 commit. Prebuild binaries can be downloaded from here(仅在开发版本中)

示例代码如下:

rebol []

ncurses: make library! %libncursesw.so

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

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