为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用node.js中的C ++库?

如何使用node.js中的C ++库?

慕码人2483693 2019-11-22 15:27:16
如何使用node.js中的C ++库?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

看一下node-ffi。


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


查看完整回答
反对 回复 2019-11-22
?
噜噜哒

TA贡献1784条经验 获得超7个赞

现在对该问题有了新的答案。从版本3.0开始,SWIG似乎为Node.js,Webkit和v8 提供了JavaScript接口生成器。


我已经在Java和Python上广泛使用SWIG一段时间了,一旦您了解SWIG的工作原理,就几乎不需要花力气(与ffi或目标语言中的等效语言相比)就可以将C ++代码与SWIG语言连接支持。


举一个小例子,假设您有一个标头为myclass.h的库:


#include<iostream>


class MyClass {

        int myNumber;

public:

        MyClass(int number): myNumber(number){}

        void sayHello() {

                std::cout << "Hello, my number is:" 

                << myNumber <<std::endl;

        }

};

为了在节点中使用此类,您只需编写以下SWIG接口文件(mylib.i):


%module "mylib"

%{

#include "myclass.h"

%}

%include "myclass.h"

创建绑定文件binding.gyp:


{

  "targets": [

    {

      "target_name": "mylib",

      "sources": [ "mylib_wrap.cxx" ]

    }

  ]

}

运行以下命令:


swig -c++ -javascript -node mylib.i

node-gyp build

现在,从同一文件夹运行节点,您可以执行以下操作:


> var mylib = require("./build/Release/mylib")

> var c = new mylib.MyClass(5)

> c.sayHello()

Hello, my number is:5

即使我们需要为这样一个小示例编写2个接口文件,也请注意我们不必MyClass在sayHello任何地方提及构造函数或方法,SWIG会发现这些内容并自动生成自然接口。


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 710 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信