2016-12-28 56 views
3

我有這個簽名的函數:水晶C綁定:返回類型char *

const char* get_version(); 

我的聲明是:

fun get_version(): LibC::Char* 

,並使用它:

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

如何我可以管理返回字符串嗎?我是否還必須導入strlen來測量C字符串的長度並手動將其轉換爲水晶字符串?

回答

2

String.new(MyLib.version)包裝Char*指針。如果你知道字符串的長度,你也可以撥打String.new(ptr, size)

請注意,這將複製指針中的數據,因此C綁定可能會釋放其指針而不會影響水晶字符串。

+0

非常好。我經常想念最簡單的解決方案:) – Mat