【问题标题】:Is there any way to use c++ in chrome extension?有没有办法在 chrome 扩展中使用 c++?
【发布时间】:2009-11-03 12:09:36
【问题描述】:

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

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

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

    如果您的目标是 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 年 5 月 14 日更新

    Native Client 被弃用,asm.js 被WebAssembly 取代,WebAssembly 正在成为为 Web 编译 C++ 代码的新标准。

    【讨论】:

    • 浏览器对 PPAPI 的支持是什么?它是 Chrome 独有的东西,因此将来被其他浏览器使用的可能性很小吗?
    • PPAPI 也受 Opera 支持,因为它现在基于 Chrome。
    • 请注意,NPAPI 也好不到哪里去,它现在只支持 Safari/Firefox,因为 IE 或 Chrome 都不再支持它了。 IE 使用了 ActiveX,Microsoft Edge 也弃用了它。我想构建原生浏览器插件并不是一件容易跨浏览器的事情。
    • 你能扩展你的更新吗?是否有任何 URL 以及如何使用 WASM 开发浏览器扩展的任何手册?
    【解决方案2】:

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

    查看通用描述at wikipedia

    【讨论】:

    • 那为什么不直接把它写成NPAPI呢?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2012-05-14
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多