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.