【问题标题】:Crystal C bindings: return type char*Crystal C 绑定:返回类型 char*
【发布时间】:2017-05-12 06:28:47
【问题描述】:

我有一个带有这个签名的函数:

const char* get_version();

我的声明是:

fun get_version(): LibC::Char*

并使用它:

version = MyLib.get_version()
puts version # how to convert to String?

如何管理返回字符串?是否还要导入 strlen 来测量 C 弦的长度并手动将其转换为 Crystal 弦?

【问题讨论】:

    标签: crystal-lang


    【解决方案1】:

    你用String.new(MyLib.version) 包裹Char* 指针。如果你知道字符串长度,你也可以打电话给String.new(ptr, size)

    请注意,这将从指针中复制数据,因此 C 绑定可以释放其指针而不影响水晶字符串。

    【讨论】:

    • 另外,一个人可能想要手动删除指针,只有在源期望调用者这样做的情况下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2022-01-16
    • 2021-01-02
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多