Hello, I'm trying to make racket bindings for libgphoto2. Its API uses CameraText struct for outputting strings, which just wraps char array.
My first attempt was: (define _Camera-ptr (_cpointer 'Camera)) (define _CameraText-ptr (_cpointer 'CameraText)) (define-gphoto gp_camera_get_about (_fun _Camera-ptr (v : _CameraText-ptr) _GPContext-ptr -> _int)) But this was giving me segfaults (not to mention the pointer here is opaque and there are no getter functions in API). Later on I've stumbled across https://github.com/dyoo/ffi-tutorial/blob/master/ffi/tutorial/examples/struct-with-array/struct-with-array.rkt so I've tried this: (define _Camera-ptr (_cpointer 'Camera)) (define camera-text-size (* 32 1024)) (define-cstruct _CameraText ([text (_bytes/len (camera-text-size))])) (define-gphoto gp_camera_get_about (_fun _Camera-ptr (v : _CameraText-pointer) _GPContext-ptr -> _int)) (Where bytes/len is helper taken from that example) How can I initialize this struct to mimic C CameraText txt;? Is there some better way to handle char arrays (and converting them to strings) than _byte array? Or should I go with something like (but this was segfaulting as well): (define-cstruct _CameraText ([text _string]))
____________________ Racket Users list: http://lists.racket-lang.org/users