Как я могу ввести указатель структуры в JavaScript с помощью FFI? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь передать указатель на struct на метод из nodejs с помощью ffi.Но я получаю следующую ошибку.Он не может определить тип структуры JavaScript, которую я создал.Как это исправить?

Для аналогичных методов с int*,double* и т. Д. Я могу заставить его работать.

learn.h

struct myobj
{
  int a;
};

extern "C"  void create_object(struct myobj*);

learn.cc

void create_object(struct myobj* obj)
{
  return;
}

learn.js

var ffi = require('ffi');
var ref = require('ref');
var Struct = require('ref-struct');
...
var myObj = Struct(
  {
    'a': 'int'
  }
);

var myObjPtr = ref.refType(myObj);
...
var learn = ffi.Library(mathlibLoc, {
    'create_object': ['void',[myObjPtr]]
});

module.exports = learn;

тест.js

var learn = require('./learn.js');
...
var blah = ref.alloc('myObj');
learn.create_object(blah);

throw new TypeError ('не удалось определить правильный "тип" из:' + JSON.stringify (type)) ^

TypeError:не удалось определить правильный «тип» из: «myObjPtr»

1 Ответ

0 голосов
/ 11 октября 2018

Наконец, я нашел решение для этого.

learn.js

module.exports = {learn,myObj};

test.js

var labh = ref.alloc(learn.myObj);
learn.learn.create_object(blah);

Мы должны экспортировать переменную и сделать правильный выбор области объекта.

...