sapsi <[EMAIL PROTECTED]> wrote: > I have a C function f(void**,int *), in which it writes some > information (it is a RGB32 image). > > Here is what i do > rowlength=c_int() > data=c_void_p() > d=pointer(data) > f(d,byref(rowlength) > The call works (no segmentation fault), now how do i access the data > in d? Because i need to pass it to a another function QImage that > takes void* as its first parameter. > > If i do d.contents i get c_void_p(3067478024L)
You almost answered your own question! d.contents is a c_void_p ie a (void *) so you can pass d.contents to QImage directly I would have thought. If you want to actually read the data from python then you'll need to cast it to some other pointer type than c_void_p first, eg >>> d c_void_p(136692916) >>> s = c_char_p(d.value) >>> s c_char_p(136692916) >>> s.value 'hello' >>> or use ctypes.memmove to copy the data out to somewhere else. -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list