使用Rebol 3 FFI包装共享变量

时间:2015-10-12 10:21:57

标签: rebol rebol3

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

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

extern WINDOW *stdscr;

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

Rebol 3 FFI可以吗?

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

1 个答案:

答案 0 :(得分:3)

您可以使用commit执行此操作。可以从here(仅在开发版本中)下载预构建二进制文件

以下是示例代码:

rebol []

ncurses: make library! %libncursesw.so

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

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