Как использовать InstanceMethod (), чтобы обернуть метод, возвращающий объект? - PullRequest
0 голосов
/ 15 мая 2019

Работает над созданием надстройки, которая вернет Object среде узла. Основываясь на моей работе над введением Атулом Анандом N-API в C ++ , методы объекта класса обернуты в InstanceMethod() для их раскрытия; но эта функция хочет метод, который возвращает Napi::Value. Я не могу понять вызов для преобразования указателя C ++ в Value; Value::From(env, ptr) ошибок (Visual C ++ 2017) с «невозможно преобразовать из« списка инициализаторов »в« Napi :: Value »».

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вам нужно будет использовать napi_wrap и napi_unwrap в вашем нативном коде при доступе к трансграничным объектам.
napi_unwrap (): для извлечения нативного кодаэкземпляр, который ранее был обернут в объект JavaScript
napi_wrap () : для обёртывания собственного экземпляра в объект JavaScript

Следующий URL-адрес для документации n-api Object Wrap, которыйимеет более подробную информацию об этом.https://nodejs.org/api/n-api.html#n_api_object_wrap

В следующем примере github используется это значение
https://github.com/nodejs/node-addon-examples/tree/master/8_passing_wrapped/napi

0 голосов
/ 20 мая 2019

Кажется, что даже когда я спрашивал здесь, кто-то еще спрашивал на сайте github Node-API-Addon. Изначально ответом на вопрос пользователя было то, что мне нужно, чтобы мой код работал.

Вкратце (и очевидно в ретроспективе): указатель C ++ бесполезен в JavaScript, метод должен возвращать объект JavaScript, обертывающий объект C ++. Объект JS поддерживается в пределах napi_ref (Napi::Reference), а ссылка Value() - это то, что возвращается из метода доступа.

...