web-dev-qa-db-ja.com

chrome拡張機能でc ++を使用する方法はありますか?

chrome拡張子でc ++バイナリを使用することは可能ですか?

28
Xinus

はい、他のブラウザと同様に、拡張機能と通信するNPAPIプラグインを作成できます。

関連するGoogleページを参照してください code.google.com

そして、より一般的な説明 ウィキペディアで

17
Omiod

NPAPIは、セキュリティ上の懸念からChrome/Operaから非推奨になりました。

Firefoxをターゲットにしている場合は引き続きNPAPIを使用できますが、Firefoxがトレンドに従っている場合は、ある時点で無効になる可能性があります。

あなたが今日持っているより良いオプションは

Chromeのみをターゲットにしている場合はNaClを使用してください

代わりに使用できます NativeClient (A.K.A。NaCL、A.K.A。PPAPI-PepperPlugin API)

NaCl内で実行されるすべてのコードはサンドボックス化されているため、JavaScript拡張機能と同じくらい安全です。

すべてのプラットフォームをターゲットにする場合は、asm.jsを使用してください

Emscripten を使用すると、C/C++コードをasm.jsと呼ばれる高度に最適化されたjavascript形式にコンパイルできます。ほぼネイティブのパフォーマンスを持つように設計されており、現在 Safariを除くグレードAのブラウザから適切にサポートされています 。 Firefoxのパフォーマンスは、現時点ではChromeよりも優れていますが。

主要なブラウザベンダーも、部分的にasm.jsに触発された、WebAssemblyと呼ばれる新しい標準に取り組んでいますが、この記事の時点では主な使用の準備ができていません。

更新2018-05-14

Native Clientは非推奨になり、asm.jsは WebAssembly に置き換えられます。これは、Web用のC++コードをコンパイルするための新しい標準になりつつあります。

38
Eduardo

上で述べたように、すべてのプラットフォームでEmscriptenを使用してchromeおよびasm.jsにNaClを使用できますが、リバースエンジニアリングはバイナリよりも単純です。現在、中間の解決策があります:webassembly-LLVMバイトコードブラウザへの埋め込みは、ほとんどの最新のブラウザでサポートされています https://caniuse.com/#feat=wasm 。したがって、EmscriptenはC++をwasmにコンパイルできますが、ほとんどの場合、asm.jsよりも高速です。

0
stepuncius