> Well, it works! I realised I had not updated the DLL on my device (that's
> what comes of working late). Just for the record, I have tested two methods,
> and both work fine to pass a string to a C dll requiring a char * input:

1. use mystr1=c_char_p("mystring")
2. use mystr2=create_string_buffer("mystring")

> Both methods require the ctypes module and work equally well with the DLL, > but there are some differences (all of which I am not aware at the moment). > Method 1 creates a ctypes Array object, whereas method 2 appears to create
> something which behaves more like a standard Python string.

From my experience, it sounds to me that c_char_p creates a wrapper over an existing python string that is suitable for being passed as argument in a ctypes dll function.

create_string_buffer will duplicate the content of the string in an internal buffer and the resulting object will provide a fixed-length array interface to modify this buffer from python.

This one should be used when the c function will modify the char* argument in place (i.e. write directly in this buffer). Since python strings are supposed to be immutable (with the benefit of being hashable and so insertable as keys in a dict) first method should not be used here.

cheers,
Alexandre

_______________________________________________
PythonCE mailing list
PythonCE@python.org
http://mail.python.org/mailman/listinfo/pythonce

Reply via email to