正在创建一个插件,该插件将向节点环境返回Object
。以我的工作Atul Anand's introduction to N-API in C++为基础,将类对象的方法包装在InstanceMethod()
中以进行公开;但是该函数需要一个返回Napi::Value
的方法。我无法弄清楚将C ++指针转换为Value
的调用; Value::From(env, ptr)
错误(Visual C ++ 2017),错误为“无法从“初始化列表”转换为“ Napi :: Value””。
答案 0 :(得分:0)
看来,即使我在这里问,Node_API-Addon github站点上的其他人都是asking。最初发布给用户的问题的解决方案是我需要使我的代码正常工作。
简而言之(回想起来很明显):C ++指针在JavaScript中是无用的,该方法需要返回一个包装了C ++对象的JavaScript对象。 JS对象维护在napi_ref
(Napi::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