将c ++代码(本机客户端)移植到浏览器(Web应用程序)

时间:2016-12-11 06:32:01

标签: c++ qt web-applications google-nativeclient ppapi

我有一个使用Qt-creator SDK编写的c ++模块。我希望将此代码移植到任何网页上,而不会影响最终用户的源代码。用户应该能够在任何浏览器(Chrome,Firefox,Safari,Explorer)上查看此模块的输出,而无需安装任何其他浏览器插件。有哪些更好的选择来实现这一目标。我用Google搜索,发现很少有这样的选择:

  1. Google Native客户端(NaCl) - 但它仅在Chrome上运行。这是Web应用程序的未来吗?
  2. PPAPI - 不确定它是否与NaCl相同
  3. NPAPI - 几乎被摧毁
  4. Emscripten - 它将c ++转换为js。因此,用户可以看到源代码。
  5. WebAssembly
  6. 我还有其他选择可以实现吗?如果不是我应该从上面的选项中挑选哪一个!?提前谢谢了。一个

1 个答案:

答案 0 :(得分:3)

一些澄清:

  1. Chrome以外的浏览器不支持NaCl。我们(Google的NaCl / WebAssembly团队)将来更关注WebAssembly。
  2. PPAPI是NaCl使用的一组API。
  3. NPAPI:在出路的时候,无论如何都需要安装插件。
  4. Emscripten。它确实将C ++编译为JS,但我不会说它向用户显示了您的源代码。它通过通常的编译和优化过程得到了显着的改变,我认为它比源代码更接近机器代码。此外,我们正在为emscripten添加WebAssembly支持,因此使用相同的源可以为那些支持它的浏览器生成WebAssembly,为那些尚未支持的浏览器生成asAs.js。
  5. WebAssembly是未来,并且将满足您的所有标准,但需要注意的是,wasm可用的浏览器API和功能与JavaScript可用的相同。例如,您将无法无限制地访问用户的文件系统。所有4家主要的浏览器供应商都在实施webassembly,但它应首先出现在Chrome和Firefox中,因为这些浏览器的发布时间表与各自的操作系统脱钩。
  6. 我的建议是尝试使用emscripten移植代码。您今天可以开始使用asm.js,当WebAssembly启动时,您可以用最少的额外工作来定位它。将来会有其他支持wasm的工具链和语言,但今天emscripten真的是唯一可以随时使用的选项。