I have a function with this signature:
const char* get_version();
My declaration is:
fun get_version(): LibC::Char*
And to use it:
version = MyLib.get_version()
puts version # how to convert to String?
How can I manage the return string? Do I have to import also strlen to measure the length of the C string and covert it to Crystal string manually?
You wrap the Char*
pointer with String.new(MyLib.version)
. If you know the string length, you may call String.new(ptr, size)
too.
Note that this will copy the data from the pointer, so the C binding may release its pointer without affecting the Crystal String.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With