On Tuesday, 30 July 2013 at 20:09:01 UTC, Milvakili wrote:
On Tuesday, 30 July 2013 at 20:02:51 UTC, Dicebot wrote:
On Tuesday, 30 July 2013 at 19:52:44 UTC, Milvakili wrote:
I'm linking D with C++ lib.a file. When the C++ function has compatible data types I can call them from D. But when I changed the parameter to string I got bunch of errors.

Data Type Compatibility table does not include strings. Is there a way of passing strings?

http://dlang.org/phobos/std_string.html#.toStringz


So I need to pass them as char*, I can not pass them as string?

You can't pass them as string because they have different representations. A C++ string is null terminated while a D string is not. If you pass a D string to C++ then it will not have the same length and give undesirable behavior.

If you really want to use strings, then wrap each C++ function with one that converts the string to a C string. If D used both pascal and C++ style strings as one(a waste of 1 extra byte per string) then life would be easier.


Reply via email to