Как использовать InstanceMethod(), чтобы обернуть метод, возвращающий объект?
Работа над созданием дополнения, которое вернет Object
в среду узла. Основываясь на моей работе над введением Атулом Анандом N-API в C++, методы объекта класса обернуты в InstanceMethod()
разоблачить их; но эта функция хочет метод, который возвращает Napi::Value
, Я не могу понять вызов для преобразования указателя C++ в Value
; Value::From(env, ptr)
ошибки (Visual C++ 2017) с "невозможно преобразовать из" списка инициализаторов "в" Napi::Value "".
2 ответа
Кажется, что даже когда я спрашивал здесь, кто-то еще спрашивал на сайте gitub Node-API-Addon. Изначально ответом на вопрос пользователя было то, что мне нужно, чтобы мой код работал.
Вкратце (и очевидно в ретроспективе): указатель C++ бесполезен в JavaScript, метод должен возвращать объект JavaScript, обертывающий объект C++. Объект JS поддерживается в пределах napi_ref
(Napi::Reference
) и ссылка Value()
это то, что возвращается из метода доступа.
Вам нужно будет использовать napi_wrap и napi_unwrap в вашем собственном коде во время трансграничного доступа к объектам.
napi_unwrap (): для извлечения собственного экземпляра, который ранее был обернут в объект JavaScript
napi_wrap (): оборачивает собственный экземпляр в объект JavaScript
Следующий URL-адрес для документации оберток объекта n-api, которая содержит более подробную информацию об этом. https://nodejs.org/api/n-api.html
Следующий пример GitHub имеет такое использование
https://github.com/nodejs/node-addon-examples/tree/master/8_passing_wrapped/napi