如何将指针传递给外部库?

时间:2014-01-29 16:33:21

标签: dll rebol rebol2

问题。使用外部库时,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的例程的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

作为链接状态

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

为我工作