[乱雑]Electronはnode-ffiを介してC++dllを呼び出す
9414 ワード
Electronはnode-ffiを介してC++dllを呼び出す
ffiインストールと呼び出し
node-gypのインストール設置前提条件 python(v 2.7,3.xはサポートされていません). visual C++Build Tools、または(vs 2015以上(15含む)) .net framework 4.5.1
クリーンな環境であれば、次のコマンドで をワンタッチでインストールできます.インストールコマンド
問題にぶつかる pythonが見つからないか、環境が間違っています. コマンドラインpythonが使用可能かどうかを確認し、使用できない場合はpathを設定する.コマンドラインが使用可能であることを確認します.マルチバージョンの設定は、オンライン関連チュートリアルを参照して を設定できます.コマンドラインが使用可能です.次のコマンドで を設定できます.
次の node-gyp rebuildエラー node-gyp を再インストールは、次のコマンド を順次実行する.
ヒントシステムSDKが見つかりません 対応するSDKをインストールするか、現在のシステムにインストールされているSDKを強制的に設定します.
node-gyp構成エラー プロキシポート を設定する.
ヒントhttpsタイムアウトまたは異常 httpリクエスト への変更
msBuild.Exceエラー vsバージョン の設定
もnodeかもしれませんが、npmバージョンは一致しません.バージョン を更新することができます.ここでは、packageを見つけるためにバージョンを強制的に更新する方法について説明します.jsonは対応するモジュールに打ってバージョン番号を変更し、 を実行する.すべての設定が間違っている場合は、次のコマンド を試してみてください.
インストールffiはnode-ffiとも呼ばれます前提条件node-gyp をインストールする実行コマンドインストール コマンドのインストールが成功しない場合はwindowsがgccをインストールしていない可能性があります.インストール をダウンロードすることができます.もしまだ成功しないならばソースコードをおりて自分でインストールをコンパイルすることができます ソースアドレス gitで次のコマンド を実行できる場合
上記の成功でこのモジュールをnode_にコピーできます.moudubleは直接使用できます.でもElectronはまだダメだElectronでコンパイルしなきゃ ソースコードが通じない場合は、具体的な問題だけが具体的に分析されます.権限がないかどうか、重要なフォルダが作成されていないかどうかを見てみましょう.このときetc を手動で作成することができる.
Electronは手動でコンパイルしたffiを参照関連知識点紹介、手動で第3のモード にコンパイルその後、次のコマンドを実行できます.モジュールの現在のディレクトリの下で実行しなければなりません.そうしないと、bindingsファイル が見つかりません.パラメータはtargetがelectronバージョンarchに対応する32か64かの後ろのウェブサイトがelectronに対応するヘッダファイルをダウンロードすることを説明して、もしアドレスが多く試すことができなければ、多く試すことができて、もしやはりだめならば宝を洗う を考慮することができます
発生する可能性のある問題 %1 is not a valid Win32 application electron再コンパイルは、以下のモジュールを少なくすることはできません.グローバルにインストールすることも、現在のプロジェクト のみをインストールすることもできます. program.exeのエラーはnodeかもしれません.jsインストールが正しくない、または構成が正しくない vscode拡張意外死亡 Git拡張の問題かもしれませんが、 を削除してください. gitが削除してもだめならnodeかもしれません.js環境の構成が間違っています.ここで発生した問題はnodeをスケジューリングします.jsはこの問題を起こすがnode.js拡張は統合されています.だから使わないわけにはいかないのでnodeをリセットします.jsはきれいに削除して、必ずきれいにしてください.
ダイナミックライブラリの呼び出しはffiモジュールを参照し、対応するタイプを宣言し、char*はString に直接伝えることができる.参照およびポインタタイプの単一変数は、次のようにすることができる .はjsメソッドのようにexportによって を呼び出すことができる.配列の相関用法は、このアドレス を参照することができる.他の値タイプおよび他の参照タイプは、このref を参照することができる.
よくあるエラーリンクエラーのようなエラーは、一般的にdllが見つからないか、dllが他のdllに依存しているか、エラー符号化 を参照することができる.参照エラーは、モジュール内でrefを折り返しモジュールで参照することができ、electronによってダウンロードアドレスをコンパイルする必要がある可能性があります.http://download.csdn.net/download/liyangyang08/10163491
未知の試みに直面することは私たちにできる唯一のことです.
ffiインストールと呼び出し
node-gypのインストール
npm install --global --production windows-build-tools
npm install -g node-gyp
問題にぶつかる
npm config set python D:\Library\Python\Python27\python.exe
次の
node-gyp configure --python v2.7.3 --verbose
npm uninstall node-gyp -g
npm i -g windows-build-tools#
npm install -g node-gyp
npm iconfig set python python
npm i microtime --save-dev
--proxy=http://myproxyurl/
npm config set registry http://registry.npmjs.org/
npm config set registry http://registry.npmjs.org/
npm config get registry # http, ,
npm install --msvs_version=2013
npm install --msvs_version=auto #
npm install npm -g
npm install
node-gyp configure --verbose
インストールffiはnode-ffiとも呼ばれます
npm install ffi
git clone git://github.com/node-ffi/node-ffi.git
cd node-ffi
node-gyp rebuild
Electronは手動でコンパイルしたffiを参照
node-gyp rebuild --target=1.7.9 --arch=x64 --target_arch=x64 --dist-url=https://atom.io/download/electron
https://npm.taobao.org/mirrors/atom-shell
発生する可能性のある問題
npm rm node-sass
npm install node-sass
npm install nan
npm install ref
npm install ref-array
ダイナミックライブラリの呼び出し
var ffi = require('node-ffi')
var ref = require('ref');
var ArrayType = require('ref-array')
var intPtr = ref.refType('int');
var floatPtr=ref.refType('float');
var float=ref.types.float;
var floatArray = ArrayType(float);
var outNumber = ref.alloc('float');
var actualNumber = outNumber.deref();
exports.User32 = ffi.Library('user32', {
'GetWindowLongPtrW': ['int', ['int', 'int']],
'SetWindowLongPtrW': ['int', ['int', 'int', 'long']],
'GetSystemMenu': ['int', ['int', 'bool']],
'DestroyWindow': ['bool', ['int']]
});
よくあるエラー
未知の試みに直面することは私たちにできる唯一のことです.