如何从 node.js 使用C++库?
2022-08-30 04:24:08
如何从 node.js 使用C++库?
这个问题现在有了一个新的答案。SWIG,从3.0版本开始,似乎为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;
}
};
为了在 node 中使用这个类,你只需编写以下 SWIG 接口文件 (mylib.i):
%module "mylib"
%{
#include "myclass.h"
%}
%include "myclass.h"
创建绑定文件绑定。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个接口文件,但请注意,我们不必在任何地方提及构造函数或方法,SWIG会发现这些东西,并自动生成自然接口。MyClass
sayHello