Ваша функция возвращает два значения? Вы имеете в виду, что ваша функция c возвращает указатель на данные и int как длину?
предположим, что ваша с функция объявлена как
xxxx.declare('function_name',
ctypes.default_abi,
ctypes.int, //the return value, suppose as length
ctypes.uint8_t.ptr.ptr);
var ct_ptr=new ctypes.uint8_t.ptr();
var ct_len=function_name(ct_ptr.address());
ct_ptr.contents is the 1st element of the array
How to access the data in javascript from the ctype pointer of type uint8_t предлагает ct_ptr [1] .contents будет иметь доступ к 2-го элемента. Я попытался, и я обнаружил, что [1] неприемлемо. Затем я попытался бросить
var ct_array=ctypes.cast(ct_ptr, ctypes.uint8_t.array(4));
//then ct_array[0 ... 3] is accessible.
Это же удалось, когда размер массива не более чем 4. Однако, получается значение точки в массив байтов. Правильный путь:
var ct_arrayptr=ctypes.cast(ct_ptr, ctypes.uint8_t.array(ct_len.value).ptr);
var ct_array=ct_arrayptr.contents;
//now ct_array[0 ... ct_len.value-1] is accessible.