我具有此签名的功能:
const char* get_version();
我的声明是:
fun get_version(): LibC::Char*
并使用它:
version = MyLib.get_version()
puts version # how to convert to String?
如何管理返回字符串?我是否还必须导入strlen才能测量c字符串的长度并将其遮盖至水晶字符串?
用String.new(MyLib.version)
包装Char*
指针。如果您知道字符串长度,则可以致电String.new(ptr, size)
。
请注意,这将从指针中复制数据,因此C绑定可能会释放其指针而不会影响Crystal String。