Я пытаюсь обернуть функцию C
Color *ImageExtractPalette(Image image, int maxPaletteSize, int *extractCount);
Я сделал необработанную оболочку, но теперь я хочу также создать расширенную оболочку, чтобы она имела подпись
(_Image? integer? . -> . (listof _Color?))
, где _Image
и _Color
- это типы структур C, определенные с define-cstruct
.
Я пробовал это (drl
определяется с define-ffi-definer
):
(drl ImageExtractPalette*
(_fun _Image _int (extract-count : [_ptr o _int]) -> (colors : [_list o _Color extract-count]) -> colors)
#:c-id ImageExtractPalette)
Однако я получаю сообщение об ошибке
_fun: got an expression for a custom type that does not use it
at: (colors : (_list o _Color extract-count))
in: (_fun _Image _int (extract-count : (_ptr o _int)) -> (colors : (_list o _Color extract-count)) -> colors)
Документы для _list
: https://docs.racket -lang.org / foreign / foreign_procedures.html #% 28form ._% 28% 28lib._ffi% 2Funsafe..rkt% 29 .__ список% 29% 29