On 03.01.2016 13:30, TheDGuy wrote:
I get an access violation with this code:

extern(C) char* write(char* text);

void main(string[] args){
     char[] text = "Hello World".dup; //.dup converts string to char[]
     text ~= '\0'; //append

     char* result = write(text.ptr); //you need .ptr
     const(char)[] s = cstr2dstr(result);
     writeln(s);
     readln(); //keep the window open
}

auto cstr2dstr(inout(char)* cstr)
{
     return cstr ? cstr[0 .. strlen(cstr)] : "";
}

--

#include std.stdio;

char* write(char* text){
     return text;
}


Works for me after adding the needed imports and removing the wrong include from the C file. Is this really the actual code you're running? Doesn't your C compiler reject that include? gcc does.

Reply via email to