问题标签 [node.js-addon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 NAN 将数组从 node.js 传递到 c++ v8
我正在使用NAN在 node.js 中包含一个 c++ 库。我了解如何在两者之间来回传递数字和字符串,但我不明白如何传递数组。我想做的是这样的:
index.js
测试.cc
声明了我想从 c++ 库中使用的实际方法:
我尝试查看文档,但他们没有说任何关于指针和数组的内容。我错过了什么吗?
c++ - V8 多线程函数
我正在编写一个 Node 插件,但在尝试从 C++ 工作线程调用 V8 函数对象时遇到问题。
我的插件基本上启动了一个 C++ std::thread 并使用 WaitForSingleOject() 进入一个等待循环,这是由另一个 C++ 应用程序(一个 X-Plane 插件)写入一点共享内存触发的。我试图让我的 Node 插件在 Windows 共享事件发出信号时唤醒,然后调用我从节点应用程序注册的 JavaScript 函数,该函数又会将源自 X-Plane 的数据传递回 Node和网络世界。
我已经设法弄清楚如何注册一个 JavaScript 函数并从 C++ 调用它,但仅限于 V8 主线程。我似乎找不到从 std::thread 调用函数的方法。
我尝试了各种方法,Locker 对象(变量成功),持久函数(不起作用),保存主隔离对象,进入/退出隔离,但是如果/当代码最终到达函数对象时它是无效的。
我得到不同的结果,从崩溃到冻结,这取决于我是否创建了各种储物柜和解锁器对象。
我对 V8 完全陌生,所以我不确定我做对了什么。有问题的代码如下:
如果有人可以提供帮助,我将永远感激不尽!
c++ - 在 NodeJS 插件中将 args 转换为 double
我想将参数 0 转换为 long,以将其用于 dll 函数。
函数定义为long function(long)
电话就像
我收到以下警告:
还有其他节点方法吗?如果我转换为字符串,然后通过 C 本机函数将其转换为 long,我不会丢失数据,对吗?(我并不真正关心“数据丢失”,但我想摆脱警告)
c++ - v8::Context 内存泄漏
我正在尝试使用 v8 在 C++ 上开发 nodejs 模块。
这是源代码。
然后用js代码测试一下:
每个函数都有不同的问题:
TestContext1工作正常,但访问全局上下文并关闭进程。
TestContext2无法访问全局上下文,但会导致内存泄漏。
我所需要的 - 在隔离的上下文中执行 js 脚本而不会发生内存泄漏。
节点 vm 不起作用,因为 vm.runInNewContext() 具有相同的内存泄漏。
有人有什么想法吗?
c++ - 将 c++ 双缓冲区传递给 Node Js(直接)[Node JS : V8 c++ : Nan]
我正在尝试将确定的双精度数组从 c++ 传递回 Node JS。我现在这样做的方式有效,但它会扼杀性能。因为我需要将双缓冲区转换为 v8 数组。有没有办法直接将双打传递给节点 JS 而无需转换?这是我希望避免使用的伪转换代码:
从节点 js,我得到这样的双打:
c++ - 缓冲字节 - Node.js 插件
我想从 Node.js 接收 wav 流(在附加组件中)。它是这样实现的:
但现在我想缓冲这些信息,并创建原始 wav 的副本。到目前为止,我无法用字节填充新文件。
我不明白为什么,但sizeof(buf)
总是太小。我想是因为这个。
c++ - 节点 v0.12 的 C++ API 文档
是否有关于 node.js 的 C++ API 的完整文档?
我能找到的所有东西都是http://izs.me/v8-docs/main.html似乎很旧。并且基于这篇文章https://strongloop.com/strongblog/node-js-v0-12-c-apis-break/节点 v0.12 的 API 发生了重大变化。
问题是我需要将旧模块迁移到 0.12 并且没有文档几乎是不可能的。
c++ - V8 回调,使用数字而不是字符串
将参数从 Node.js 传递给 C++ 函数,并通过回调函数将结果返回给 Node.js。
在Node.js 插件回调示例之后,该示例已修改为涉及数字而不是字符串。
这是来自 Node.js 插件的示例代码集:
这是修改后的代码集,其中 value 是数组中某个位置的数字:
c++ - 如何在 C++ NodeJS 插件中使用 V8::AddMemoryAllocationCallback 方法
我正在尝试对 NodeJS C++ 插件使用V8::AddMemoryAllocationCallback方法。我想调用该方法并返回该大小值。我想出了以下代码。似乎它没有调用回调方法。代码取自gonative npm 模块。
但是该memCallback
方法没有被触发。为什么?如何解决?
它将使用以下 C++ 代码来访问 V8 库。
node-gyp 用于构建和运行代码(node-gyp rebuild && node index.js 1000 && ls /tmp/
从当前文件夹尝试)
以下是 JavaScript 代码。我创建了几个变量来分配一些内存。
电流输出为;
c++ - Fail to build node c++ addon
I am working on a project that uses stereolab's depth camera ZED to retrieve distance of obstacles. Its SDK is written in C++ and it requires CUDA 6.5. However, I have to integrate this program with another part of project, which is written in nodejs. So I decided to compile ZED code as a node module. I've gone through node addon tutorial. Now I've written the interface, but I got following error after trying to build the project using command "node-gyp configure build". It seems the 'zed' module wasn't built. I have no idea what this error is and I've searched nothing so far. Can someone please give me some directions? Thank you.
This is my binding.gyp:
This is my package.json:
And following is basically my interface with node: (just started for testing, 'initProgram' is working as 'main' for the project)
An example using this module should be:
Not sure if this works, haven't tested it yet. I'm new to nodejs.