Как добавить собственный struct_info.json? (Emscripten)

Я хотел бы портировать библиотеку C. Здесь есть очень короткий урок: Взаимодействие с кодом

Мне нужно создать структуру с использованием javascript и вернуть указатель на нее. Я заглянул в библиотеки, которые уже портированы. Мой код выглядит следующим образом:

var ptr = _malloc({{{ C_STRUCTS.MyStruct.__size__ }}});

{{{ makeSetValue('ptr', C_STRUCTS.MyStruct.attr, '0', 'i8') }}};

Это не работает, потому что emscripten не знает о MyStruct.

В проект добавлено определение моей библиотеки, используя --js-library Но я не знаю, как добавить определение структуры (struct_info.json)

В коде C у меня есть:

struct MyStruct {
    int8_t attr;
    //...
}

Ответ 1

Вы должны создать C, а не структуру JS. Например:

var st_t = new ctypes.StructType("st_t",
        [ { "self": ctypes.PointerType(ctypes.void_t) },
        { "str": ctypes.PointerType(ctypes.char) },
        { "buff_size": ctypes.size_t },
        { "i": ctypes.int },
        { "f": ctypes.float },
        { "c": ctypes.char } ]);  

Надеюсь, это поможет.