0

致力于创建一个将返回Object节点环境的附加组件。基于Atul Anand 在 C++ 中对 N-API 的介绍,我将类对象的方法封装在InstanceMethod()其中以公开它们;但该函数需要一个返回 a 的方法Napi::Value。我无法弄清楚将 C++ 指针转换为Value; Value::From(env, ptr)错误(Visual C++ 2017)与“无法从'初始化列表'转换为'Napi::Value'”。

4

2 回答 2

2

似乎即使我在这里问,其他人也在Node -API-Addon github 站点上问。最初发布给用户问题的解决方案是我需要让我的代码正常工作。

简而言之(回想起来很明显):C++ 指针在 JavaScript 中是无用的,该方法需要返回一个包装 C++ 对象的 JavaScript 对象。JS 对象在napi_ref( Napi::Reference) 中维护,引用Value()是从访问方法返回的内容。

于 2019-05-20T19:47:58.087 回答
0

在跨边界对象访问期间,您必须在本机代码中使用napi_wrapnapi_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

于 2019-05-21T19:04:22.950 回答