我有一个带有此签名的功能:
const char* get_version();
Run Code Online (Sandbox Code Playgroud)
我的声明是:
fun get_version(): LibC::Char*
Run Code Online (Sandbox Code Playgroud)
并使用它:
version = MyLib.get_version()
puts version # how to convert to String?
Run Code Online (Sandbox Code Playgroud)
如何管理返回字符串?我是否还必须导入strlen来测量C字符串的长度,然后手动将其转换为Crystal字符串?
你用 包裹Char*指针String.new(MyLib.version)。如果您知道字符串长度,您也可以调用String.new(ptr, size)。
请注意,这将从指针复制数据,因此 C 绑定可能会释放其指针而不影响水晶字符串。
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |