10

外部 C++ ライブラリ (.so ファイルとヘッダー ファイルにアクセスできます) を Node.js アプリケーションに統合しようとしています。

多くの調査の後、私のオプションは次のように削減されます。

  1. Nodeアドオンの作成

  2. node-ffiを使用する

node-ffi の gitHub の定義から、C++ ライブラリで直接動作するかどうかはわかりません。

node-ffi は、純粋な JavaScript を使用して動的ライブラリをロードおよび呼び出すための Node.js アドオンです。C++ コードを記述せずに、ネイティブ ライブラリへのバインドを作成するために使用できます。

だから私が持っている質問は次のとおりです。

  • オプション 1) は、何らかの方法で外部 C++ ライブラリを書き直すことを意味しますか?
  • node-ffi は、作成しなければならない C ラッパーを一切使用せずに、C++ ライブラリを直接呼び出すことができますか?

私は C/C++ に関しては専門家ではないので、質問を改善できるように、基本的なことを見逃していた場合はお知らせください。

4

4 に答える 4

7

node-ffi は主に C プログラム用のようです。私は先週これを経験し、ノードアドオンでより良い運を見つけました. ライブラリ内の C++ コードと node.js の間に shim を記述する必要があります。私の場合、セキュリティ プロトコル用にパケットをエンコードおよびデコードする必要があったため、パケットを含むノード バッファーを作成し、バッファーからデータを取得する C++ コードを作成し、そのデータを C コードに送信してエンコードおよびデコードしました。デコードされたパケット。

このページ: http://luismreis.github.io/node-bindings-guide/docs/returning.html には、C++ で node.js バッファーにデータを出し入れする方法の優れた例がいくつかあります。

于 2014-02-25T02:07:34.377 に答える
3

nbindにより、外部 C++ ライブラリを使用して Node.js アドオンを簡単に記述できるようになりました。基本的に、ライブラリ ヘッダー、nbind ヘッダー、およびライブラリのクラスとメソッドをリストしたいくつかのマクロ呼び出しを含む新しいソース ファイルを作成します。その後、nbind が残りを処理します。

libui-nodeは、nbind を使用してlibuiを呼び出し、Node.js からネイティブ ウィジェットを使用してユーザー インターフェイスを生成する実際の例です。バイオインフォマティクス関連の C++ ライブラリであるvgのバインディングを作成する方法に関する短いチュートリアルもあります。

于 2016-11-28T03:18:01.387 に答える