第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

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

3 回答

?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊

看一下node-ffi。


node-ffi是一個(gè)Node.js插件,用于使用純JavaScript加載和調(diào)用動(dòng)態(tài)庫。它可用于創(chuàng)建與本機(jī)庫的綁定,而無需編寫任何C ++代碼。


查看完整回答
反對(duì) 回復(fù) 2019-11-22
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

現(xiàn)在對(duì)該問題有了新的答案。從版本3.0開始,SWIG似乎為Node.js,Webkit和v8 提供了JavaScript接口生成器。


我已經(jīng)在Java和Python上廣泛使用SWIG一段時(shí)間了,一旦您了解SWIG的工作原理,就幾乎不需要花力氣(與ffi或目標(biāo)語言中的等效語言相比)就可以將C ++代碼與SWIG語言連接支持。


舉一個(gè)小例子,假設(shè)您有一個(gè)標(biāo)頭為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;

        }

};

為了在節(jié)點(diǎn)中使用此類,您只需編寫以下SWIG接口文件(mylib.i):


%module "mylib"

%{

#include "myclass.h"

%}

%include "myclass.h"

創(chuàng)建綁定文件binding.gyp:


{

  "targets": [

    {

      "target_name": "mylib",

      "sources": [ "mylib_wrap.cxx" ]

    }

  ]

}

運(yùn)行以下命令:


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

node-gyp build

現(xiàn)在,從同一文件夾運(yùn)行節(jié)點(diǎn),您可以執(zhí)行以下操作:


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

> var c = new mylib.MyClass(5)

> c.sayHello()

Hello, my number is:5

即使我們需要為這樣一個(gè)小示例編寫2個(gè)接口文件,也請(qǐng)注意我們不必MyClass在sayHello任何地方提及構(gòu)造函數(shù)或方法,SWIG會(huì)發(fā)現(xiàn)這些內(nèi)容并自動(dòng)生成自然接口。


查看完整回答
反對(duì) 回復(fù) 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 768 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)