有没有办法在chrome扩展中使用c ++?

时间:2009-11-03 12:09:36

标签: google-chrome google-chrome-extension

是否可以在chrome扩展中使用c ++二进制文件?

3 个答案:

答案 0 :(得分:38)

出于安全考虑,NPAPI已被Chrome / Opera弃用。

如果你的目标是firefox,你仍然可以使用NPAPI,但如果Firefox遵循这个趋势,它也可能在某些时候禁用它。

您今天拥有的更好的选择是

如果您只定位Chrome

,请使用NaCl

您可以使用NativeClient(A.K.A。NaCL,A.K.A。PPAPI - Pepper Plugin API)

在NaCl中运行的所有代码都是沙箱,因此它与javascript扩展一样安全。

如果您定位所有平台

,请使用asm.js

使用Emscripten,您可以将C / C ++代码编译为高度优化的javascript格式,称为asm.js.它被设计为具有接近原生的性能,现在具有decent support from grade-A browsers except Safari。虽然目前Firefox的性能比Chrome更好。

主要的浏览器供应商也正在研究一种名为WebAssembly的新标准,该标准部分受到asm.js的启发,但截至本文尚未准备好用于主要用途

更新2018-05-14

不推荐使用Native Client,并且正在用WebAssembly替换asm.js,这正在成为为Web编译C ++代码的新标准。

答案 1 :(得分:17)

是的,与其他浏览器一样,您可以编写一个与您的扩展程序通信的NPAPI插件。

请参阅相关的Google页面at code.google.com

更通用的说明at wikipedia

答案 2 :(得分:0)

如上所述,你可以在所有平台上使用NaCl作为chrome和asm.js与Emscripten,但它的逆向工程比二进制更简单。现在有一个中间解决方案:webassembly - 大多数现代浏览器https://caniuse.com/#feat=wasm都支持在浏览器中嵌入LLVM字节码。 所以Emscripten可以将C ++编译为wasm,大多数时候它比asm.js更快。