3 回答

TA貢獻1803條經驗 獲得超6個贊
看一下node-ffi。
node-ffi是一個Node.js插件,用于使用純JavaScript加載和調用動態庫。它可用于創建與本機庫的綁定,而無需編寫任何C ++代碼。

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會發現這些內容并自動生成自然接口。
添加回答
舉報