【问题标题】:Porting c++ code (native client) to browser (Web app)将 c++ 代码(本机客户端)移植到浏览器(Web 应用程序)
【发布时间】:2017-04-26 07:13:18
【问题描述】:

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

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

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

【问题讨论】:

  • 你可以使用WebSockets
  • 感谢 Frogatto 的快速响应。我正在寻找的是,我想将我的整个 c++ 模块嵌入 HTML 页面并在任何浏览器上运行。
  • 您是否正在尝试编写浏览器扩展程序?网络应用程序?还有什么?这个问题的目标很模糊。
  • 您好,埃里克先生。我正在尝试像 NaCl 那样做。但我希望它可以在任何浏览器上运行而无需限制。同时,我想了解上述选项的优缺点。如果有人能帮助我并为我指明正确的方向,那就太好了。谢谢。
  • 使用 Qt 创建一个网络服务器,并在有人通过浏览器访问它时呈现模块的输出。您不能使用适用于所有浏览器的 Qt 浏览器插件编写代码。

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


【解决方案1】:

一些澄清:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多