3

C++ でいくつかのクラスを作成しました。OOPを使用しました。今、私はこのクラスをnodejsで使いたいと思っています。次の方法でできると思います。

  1. nodejs で C++ クラスのオブジェクトを作成し、それらのメソッドを呼び出します。
  2. コンパイルされた C++ コードを呼び出し、出力を取得します。
  3. 実行中のコンパイル済み C++ プログラムとの対話 (IPC のようなテクノロジ)。
  4. あなたが好む別の方法。

これらの解決策のうち、実行可能なものはどれですか?

注: nodejs-ffi モジュールを見てきましたが、組み込みメソッドのみを使用しているようです。本当?

私がこれを書いたとしましょう:

namespace Math
{
    class Aljebra
    {
        int Abs(int);
    }
}
4

2 に答える 2

3

はい、あなたが考えるすべての方法で可能です。

  1. Nodejs への C++ クラスのバインドを作成する必要があります。この質問またはこちらこちらを参照してください。パフォーマンスが無視できない場合は、次のような問題が発生する可能性があります。とにかく、これが最速の方法です。

  2. コーリングコード?私はいつも関数を呼び出しますが、nodejs-ffi のようなモジュールをどのように使用するか疑問に思っている場合、それらを C++ で使用するのは非常に面倒です。すべての関数名は C++ でマングルされます。これは、Math::Aljebra::Abs実際に呼び出される可能性があり_ZN4Math7Aljebra3AbsEi、使用するコンパイラに依存することを意味します。ライブラリにほとんどextern "C"関数が含まれている場合は、使用可能です。

  3. それを行うための多くのライブラリがあります。DBusの方が好きです。これを使用して、多くのシステム デーモンと通信できます。もちろん、C++ コードで使用する場合は、通信する DBus サービスを作成する必要があります。

  4. それは依存します。コンパイルできない場合は、既存のライブラリを使用してください。2 番目の解決策が唯一の解決策である可能性があります。C++ ライブラリ内で多数の nodejs インスタンスを相互に通信する必要がある場合は、3 番目のソリューションが適している可能性があります。

于 2013-01-22T17:30:25.550 に答える
1

私はNode.jsとC++を別々にかなりの量使用しました-非常に従来の方法で、Node.jsがサーバー側の言語であり、C++がクライアント側であると見なすことができたと思います。ただし、これは、クライアント側言語としてのNode.jsの多くの機能を無効にします。これは、言語の「よりホットな」機能の1つであり、両方を実行できます。

さらに、C++がクライアント側のWeb開発をサポートしているのかわかりません。これは非常に堅牢な言語であり、可能だと確信しています...しかし、Node.jsを使用してC ++を実装する方法を理解するまでに、C++で呼び出したい関数を書き直すことができたと思います。 Node.jsまたはその他のより適切な言語で。

于 2013-01-22T14:11:10.540 に答える