2

我有一个使用 Qt-creator SDK 编写的 c++ 模块。我想移植此代码以在任何网页上运行,而不会损害最终用户的源代码。用户应该能够在任何浏览器(Chrome、Firefox、Safari、Explorer)上看到此模块的输出,而无需安装任何额外的浏览器插件。有什么更好的选择可以实现这一目标。我用谷歌搜索并发现很少有这样的选项:

  1. Google Native 客户端 (NaCl) - 但它仅在 Chrome 上运行。这是 Web 应用程序的未来吗?
  2. PPAPI - 不确定它是否与 NaCl 相同
  3. NPAPI - 几乎被贬低
  4. Emscripten - 它将 c++ 转换为 js。所以源代码对用户是可见的。
  5. WebAssembly

还有其他选择可以实现我正在寻找的东西吗?如果不是,我应该从上述选项中选择哪一个!?提前谢谢了。一个

4

1 回答 1

3

一些澄清:

  1. Chrome 以外的浏览器不支持 NaCl。我们(Google 的 NaCl/WebAssembly 团队)未来更专注于 WebAssembly。
  2. PPAPI 是 NaCl 使用的 API 集。
  3. NPAPI:即将推出,无论如何都需要安装插件。
  4. 授权。它确实将 C++ 编译为 JS,但我不会说它会向用户显示您的源代码。通过通常的编译和优化过程,它已经发生了显着的变化,我会说它更接近机器代码而不是源代码。此外,我们正在为 emscripten 添加 WebAssembly 支持,因此您可以使用相同的源代码为那些支持它的浏览器生成 WebAssembly,并为那些还不支持它的浏览器生成 asm.js。
  5. WebAssembly 是未来,将满足您的所有标准,但需要注意的是,wasm 可用的浏览器 API 和功能与 JavaScript 可用的相同。因此,例如,您将无法无限制地访问用户的文件系统。所有 4 家主要浏览器供应商都在实施 webassembly,但它应该首先出现在 Chrome 和 Firefox 中,因为这些浏览器的发布时间表与其各自的操作系统是分离的。

我的建议是尝试使用 emscripten 移植您的代码。您可以从今天开始并使用 asm.js,当 WebAssembly 启动时,您可以以最少的额外工作来定位它。将来会有其他支持 wasm 的工具链和语言,但今天 emscripten 确实是唯一现成的选择。

于 2016-12-16T05:53:29.787 回答