2016-12-11 18 views
11

Chciałbym przenieść bibliotekę C. Tutaj jest bardzo krótki tutorial: Interacting with codeJak dodać własny struct_info.json? (emscripten)

Potrzebuję utworzyć strukturę przy użyciu javascript i zwrócić do niej wskaźnik. Zajrzałem do bibliotek, które są już przeniesione. Mój kod wygląda następująco:

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

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

To nie działa, ponieważ emscripten nie wie o MyStruct.

Moja biblioteka definicja jest dodawany do projektu z wykorzystaniem --js-library Ale nie wiem, jak dodać definicję struct (struct_info.json)

W kodzie C, mam:

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

Nie wiem o emscripten, ale czy nie możesz utworzyć funkcji 'createMyStruct' w C i używać jej? –

+0

Niestety nie jest to opcja. Funkcja 'MyStruct_Create' musi być zaimplementowana w js –

+0

Możliwy duplikat: http://stackoverflow.com/questions/28904273/struct-operations-in-javascript-through-emscripten – Ouroborus

Odpowiedz

1

Powinieneś utworzyć C, ale nie strukturę JS. Na przykład:

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 } ]); 

Mam nadzieję, że to pomoże.

+1

Struktura jest już zdefiniowana w C. Ale kod JS nie może go zobaczyć, ponieważ nie podano informacji o strukturze –

+0

JS ma określone funkcje do definiowania zewnętrznych C-struktur. –

Powiązane problemy