是否可以在chrome扩展中使用c ++二进制文件?
答案 0 :(得分:38)
出于安全考虑,NPAPI已被Chrome / Opera弃用。
如果你的目标是firefox,你仍然可以使用NPAPI,但如果Firefox遵循这个趋势,它也可能在某些时候禁用它。
您今天拥有的更好的选择是
您可以使用NativeClient(A.K.A。NaCL,A.K.A。PPAPI - Pepper Plugin API)
在NaCl中运行的所有代码都是沙箱,因此它与javascript扩展一样安全。
使用Emscripten,您可以将C / C ++代码编译为高度优化的javascript格式,称为asm.js.它被设计为具有接近原生的性能,现在具有decent support from grade-A browsers except Safari。虽然目前Firefox的性能比Chrome更好。
主要的浏览器供应商也正在研究一种名为WebAssembly的新标准,该标准部分受到asm.js的启发,但截至本文尚未准备好用于主要用途
不推荐使用Native Client,并且正在用WebAssembly替换asm.js,这正在成为为Web编译C ++代码的新标准。
答案 1 :(得分:17)
答案 2 :(得分:0)
如上所述,你可以在所有平台上使用NaCl作为chrome和asm.js与Emscripten,但它的逆向工程比二进制更简单。现在有一个中间解决方案:webassembly - 大多数现代浏览器https://caniuse.com/#feat=wasm都支持在浏览器中嵌入LLVM字节码。 所以Emscripten可以将C ++编译为wasm,大多数时候它比asm.js更快。