Exporting strings

BlitzMax Forums/BlitzMax Programming/Exporting strings

What's the best method of passing a string to an external library? I have a DLL written in C and I want to pass string data to it. I can get string data into blitz from the DLL using the String.FromCString function. How do I do the other way around?
I can pre-allocate the memory for the string in my DLL, but how do I pass the pointer to this allocated memory to blitz and how do I get blitz to copy the string into the memory that this pointer is pointing to?

Cheers anyone for any help :P

Use SomeString.ToCString() and remember to free it when done.

Preallocating in the DLL isnt needed, as bmx already copies the string to the new pointer.

Thanks grable for your quick reply :P

So is the DLL is responsible for deleting the memory that blitz allocated for the string?
So my function like this will be ok?

Function myReadString:Byte Ptr(a:Int, b:Int)
Local cString:Byte Ptr
Local blitzString:String = ReadString(a,b)
cString = blitzString.ToCString();
Return cString
End Function

Just checked, and yep, that worked.
Thanks very much grable.

Cheers!