I have written a DLL that I load into a Python program. Everything works fine (DLL is loaded via ctypes, functions can be called and are executed). Only the string handling is giving me a bit of a headache. The string in D is always complete garbage. I have written Python modules in D (with C wrappers) before and got them to work. But the DLL in D seems to be a completely different beast. Does anyone have experience with it?

Python uses ctypes, e.g.

myDLL = CDLL("myDLL") / WinDLL("myDLL")
myDLL.printThis(c_char_p("Hello world")) / myDLL.printThis(create_string_buffer("Hello world"))

The D side looks like like this:

export void printThis(ref char[] str) {
   printf("%s\n", str); // prints "Hello World"
   writeln(str); // prints garbage
}

OR

export void printThis(char* str) {
    printf("%s\n", str); // prints garbage
    writeln(str); // prints garbage
}

What am I doing wrong / missing here? I guess it has something to do with the pointers.

Thanks!

prin

Reply via email to