【问题标题】:How do you pass pointers to an external library?如何将指针传递给外部库?
【发布时间】:2014-01-29 16:33:21
【问题描述】:

问题。使用外部库时,Rebol2 中的pointer! 是否与 Red/System 中的相同?

如果 c 声明是:

void f (int* i);

如何定义routine!

f: make routine! [
    "Does Something"
    int [pointer! [integer!]]
    return: [char!]
] lib "f"

我看到http://rebol.com/docs/library.html#section-25

"传递指针的外部库函数,一般期望 指针是 char 或 void 数据类型。目前,REBOL 例程 不支持 void 数据类型。在大多数情况下,您可以安全通过 char 而不是 void。对于返回值,请使用 long 而不是 void。”

但是,只是有点困惑。为f 定义例程的正确方法是什么?

【问题讨论】:

    标签: dll rebol rebol2


    【解决方案1】:

    链接状态

    f: make routine! [
      "Does Something"
      pInt [char*]
      return: [long]
    ] lib "f"  
    

    几年前为我工作

    【讨论】:

    • 我最终需要使用 int 而不是 char* 来让我的库正常工作。
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多