Crystal C 绑定:return 类型 char*
Crystal C bindings: return type char*
我有一个带有此签名的函数:
const char* get_version();
我的声明是:
fun get_version(): LibC::Char*
并使用它:
version = MyLib.get_version()
puts version # how to convert to String?
如何管理 return 字符串?我是否还必须导入 strlen 来测量 C 字符串的长度并手动将其转换为 Crystal 字符串?
你用 String.new(MyLib.version)
包装了 Char*
指针。如果你知道字符串长度,你也可以调用String.new(ptr, size)
。
请注意,这将从指针复制数据,因此 C 绑定可能会释放其指针而不影响 Crystal 字符串。
我有一个带有此签名的函数:
const char* get_version();
我的声明是:
fun get_version(): LibC::Char*
并使用它:
version = MyLib.get_version()
puts version # how to convert to String?
如何管理 return 字符串?我是否还必须导入 strlen 来测量 C 字符串的长度并手动将其转换为 Crystal 字符串?
你用 String.new(MyLib.version)
包装了 Char*
指针。如果你知道字符串长度,你也可以调用String.new(ptr, size)
。
请注意,这将从指针复制数据,因此 C 绑定可能会释放其指针而不影响 Crystal 字符串。