Node-ffi、ref、ref-array、ref-structインストール

2240 ワード

nodejs/elctronでは、node-ffi、Foreign Function Interfaceを介してダイナミックリンクライブラリ、通称調DLLを呼び出し、呼び出しC/C++コードを実現し、それによって多くのnodeが実現しにくい機能を実現したり、実現した多くの関数機能を多重化したりすることができる.
node-ffi
Node-ffiは、純粋なJavaScriptを使用して動的ライブラリをロードおよび呼び出すためのNodeである.jsプラグイン.C++コードを記述せずにローカルDLLライブラリとのバインドを作成するために使用できます.JavaScriptとCにまたがるタイプ変換の処理も担当します.この方法は、Node.js Addonsと比較して、以下の利点を有する.
ノードとjs Addonsに比べて、この方法には次のような利点があります.
  • はソースコードを必要としません.
  • は、nodeNode.js Addonsが参照する.nodeを再コンパイルするたびにファイルロックを必要とせず、`electronアプリケーションのホット更新に迷惑をかける.
  • は、開発者にCコードの作成を要求しないが、開発者に一定のC知識を要求している.

  • 欠点は次のとおりです.
  • 性能有折損
  • は他の言語のFFIデバッグに類似しており、この方法はブラックボックス呼び出しに近似しており、エラーは比較的困難である.

  • インストールnode-ffiBufferクラスを通じてCコードとJSコードの間でメモリ共有を実現し、タイプ変換はref、ref-array、ref-structで実現した.node-ffi/refはCネイティブコードを含むため、インストールにはNodeネイティブプラグインコンパイル環境を構成する必要がある.
    npm install ffi
    npm install ref
    npm install ref-array
    npm install ref-struct
    

    解決策
    次は発生する可能性のある問題と解決方法です.
    https://stackoverflow.com/questions/44316064/gyp-err-build-error-stack-error-make-failed-with-exit-code-2
    https://stackoverflow.com/questions/32205721/npm-cannot-install-protractor-or-selenium-webdriver-gyp-err-build-error
    私がここで出会った問題は
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:269:23)
    gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1074:12)
    gyp ERR! System Linux 3.19.0-26-generic
    gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/node_modules/ws/node_modules/utf-8-validate
    gyp ERR! node -v v0.12.4
    gyp ERR! node-gyp -v v2.0.2
    gyp ERR! not ok 
    

    解決策
    $ npm cache clean
    $ rm -rf node_modules
    $ rm -rf ~/.node-gyp
    

    現在のユーザーディレクトリの下を削除します.node-gypフォルダおよび.npmrcファイル