当前位置: 首页 > 面试题库 >

从Node.js调用C ++库(节点插件/ node-ffi)

艾宏远
2023-03-14
问题内容

我正在尝试将外部C ++库(我可以访问.so文件和头文件)集成到我的Node.js应用程序中。

经过大量研究,我的选择减少到:

  1. 编写节点插件

  2. 使用node-ffi

从node-ffi的gitHub的定义中,我无法确定它是否可以直接在C ++库上运行:

node-ffi是一个Node.js插件,用于使用纯JavaScript加载和调用动态库。它可以用来创建到本机库的绑定,而无需编写任何C ++代码。

所以我的问题是:

  • 选项1)是否暗示以某种方式重写外部C ++库?
  • node-ffi是否可以直接调用C ++库,而无需编写任何类型的C包装器?

在C / C ++方面,我不是专家,因此,如果我错过了一些基本的知识让您能够回答,请告诉我,以便我改善问题。


问题答案:

node-ffi似乎主要用于C程序。我在上周经历了这一点,并发现节点插件的运气要好得多。您要做的是在库中的C
代码和node.js之间编写垫片。就我而言,我需要为安全协议对数据包进行编码和解码,因此我制作了包含数据包的节点缓冲区,并编写了将数据从缓冲区中取出的C

代码,然后将数据发送到我的C代码进行编码和解码解码的数据包。

此页面: http
//luismreis.github.io/node-bindings-
guide/docs/returning.html
有一些很好的示例,说明了如何在C ++中从node.js缓冲区获取数据。


 类似资料:
  • 问题内容: 我正在尝试通过node.js将一些syslog数据流式传输到Meteor集合中。它工作正常,但是Meteor客户端的轮询周期大约为10秒,对于我的品味来说,这个周期太长了- 我希望大约1秒。 通过控制台进行客户端集合插入的速度很快,并且所有客户端都在使用DDP,因此可以立即进行更新。但是从服务器端直接进行MongoDB插入将受客户端的轮询周期影响。 因此,目前看来,我只限于使用DDP从

  • DOM的概念 节点的概念 Node节点的属性 nodeName,nodeType ownerDocument,nextSibling,previousSibling,parentNode,parentElement textContent,nodeValue childNodes,firstNode,lastChild baseURI Node节点的方法 appendChild(),hasChil

  • 我们在前一章中使用了节点模块fs。 我们现在将介绍一些我们可以与Electron一起使用的其他节点模块。 OS模块 使用OS模块,我们可以获得有关运行我们的应用程序的系统的大量信息。 以下是一些在创建应用程序时有用的方法。 这些方法可帮助我们根据运行的操作系统自定义应用程序。 S.No 功能说明 1 os.userInfo([options]) os.userInfo()方法返回有关当前有效用户的

  • 问题内容: 有谁知道这是否可能?大部分用于节点检查器的示例似乎都旨在调试调用的网页。我希望能够调试茉莉花节点测试。 问题答案: 我最终写了一个名为toggle的工具: 您可以将其放入单元测试中,例如: 然后运行测试,例如:node –debug myfile.js debug。如果运行调试切换,则将一直等到ctrl-c以外的任何内容。Ctrl- c退出。您也可以重新运行,这很好。 w0000t。

  • 我想从JAVA调用NODE JS,如下所示: 我收到以下错误: 我的路径已为 是什么导致了这个问题?

  • kubernetes Node 节点包含如下组件: flanneld docker kubelet kube-proxy 使用的变量 本文档用到的变量定义如下: $ # 替换为 kubernetes master 集群任一机器 IP $ export MASTER_IP=10.64.3.7 $ export KUBE_APISERVER="https://${MASTER_IP}:6443" $