【发布时间】:2009-11-03 12:09:36
【问题描述】:
是否可以在 chrome 扩展中使用 c++ 二进制文件?
【问题讨论】:
标签: google-chrome google-chrome-extension
是否可以在 chrome 扩展中使用 c++ 二进制文件?
【问题讨论】:
标签: google-chrome google-chrome-extension
出于安全考虑,Chrome/Opera 已弃用 NPAPI。
如果您的目标是 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 被弃用,asm.js 被WebAssembly 取代,WebAssembly 正在成为为 Web 编译 C++ 代码的新标准。
【讨论】:
是的,与其他浏览器一样,您可以编写一个与您的扩展程序通信的 NPAPI 插件。
查看通用描述at wikipedia
【讨论】:
如上所述,您可以将 NaCl 用于 chrome,将 asm.js 与 Emscripten 用于所有平台,但它的逆向工程比二进制更简单。现在有一个中间解决方案:webassembly - 大多数现代浏览器都支持嵌入在浏览器中的 LLVM 字节码 https://caniuse.com/#feat=wasm 。 所以 Emscripten 可以将 C++ 编译成 wasm,主要是比 asm.js 快。
【讨论】: