亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用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 關注
  • 786 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號