如何使用InstanceMethod()包装返回对象的方法?

时间:2019-05-15 17:44:24

标签: node.js n-api

正在创建一个插件,该插件将向节点环境返回Object。以我的工作Atul Anand's introduction to N-API in C++为基础,将类对象的方法包装在InstanceMethod()中以进行公开;但是该函数需要一个返回Napi::Value的方法。我无法弄清楚将C ++指针转换为Value的调用; Value::From(env, ptr)错误(Visual C ++ 2017),错误为“无法从“初始化列表”转换为“ Napi :: Value””。

2 个答案:

答案 0 :(得分:0)

看来,即使我在这里问,Node_API-Addon github站点上的其他人都是asking。最初发布给用户的问题的解决方案是我需要使我的代码正常工作。

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

答案 1 :(得分:0)

在跨边界对象访问期间,您必须在本机代码中使用 napi_wrap napi_unwrap
napi_unwrap():检索以前包装在JavaScript对象中的本机实例
napi_wrap():将本地实例包装在JavaScript对象中

以下URL用于n-api文档“对象包装”,其中包含有关它的更多详细信息。 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