【问题标题】:Wrapping shared variables using Rebol 3 FFI使用 Rebol 3 FFI 包装共享变量
【发布时间】:2015-10-12 10:21:57
【问题描述】:

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

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

extern WINDOW *stdscr;

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

Rebol 3 FFI 可以吗?

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

【问题讨论】:

  • 在我的简陋案例中,我刚刚包装了 stdscr,因为它是在 Red/System 诅咒绑定中完成的,但问题仍然存在。

标签: rebol rebol3


【解决方案1】:

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

示例代码如下:

rebol []

ncurses: make library! %libncursesw.so

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-20
    • 2018-03-23
    • 1970-01-01
    • 2022-08-14
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多