【问题标题】:Could Native Client web application create windows and common controls while runtime?Native Client Web 应用程序可以在运行时创建窗口和通用控件吗?
【发布时间】:2013-01-19 09:27:53
【问题描述】:

我在谈论谷歌浏览器的 Native Client ...
开发人员声称它可以在浏览器的沙箱中运行从 c/c++ 编译的本机代码。
他们描述了很多东西,但从来没有指出我需要什么......那么,如果我使用 CreateWindow 在我的应用程序中创建窗口,当我的 Native Client 应用程序加载到浏览器中时会出现这个窗口吗?

【问题讨论】:

    标签: google-nativeclient


    【解决方案1】:

    简而言之,没有。关于在 Chrome 中使用 Native Client 的应用需要了解的两个关键事项:

    1. 它们独立于平台(特定于平台的调用是 不允许)。
    2. 它们仍然是网络应用程序,具有随之而来的限制和可能性。

    如果 Native Client 允许像 CreateWindow 这样的特定于操作系统的调用,它将不再独立于平台(并且还会带来安全风险)。

    相反,Native Client 提供了一组独立于平台的 API,称为 Pepper 或 PPAPI,它们在所有受支持的操作系统(目前是 Mac OS、Windows、Linux 和 Chrome OS)上的工作方式相同。如前所述,使用 Native Client 的应用程序仍然是 Web 应用程序,因此 Pepper 提供了与 JavaScript 相同的可能性和限制。例如,您可以获取 URL 或要求用户获得全屏权限,但您不能从本地文件系统访问任何随机文件(应用程序特定的隔离本地存储是可能的;就像让用户上传文件供应用程序使用一样) .

    将现有的 C 或 C++ 代码库迁移到 Native Client 非常类似于移植到不同的操作系统。您的应用应该使用 Pepper API 调用,而不是使用 Windows API 调用。

    关于其他背景,可能值得注意的是Chrome Packaged Apps 可以请求访问chrome.* 命名空间中更广泛的APIs 集合。这些 API 包括 USB、套接字、打开新窗口等。仍然不允许 Chrome 打包应用进行特定于操作系统的调用,但它们可以访问更多的 API,所有这些 API 都是独立于平台的。

    简而言之,如果您的应用可以与 Pepper API 和 chrome.* API 一起使用,那么您可以使用 Native Client 和 JavaScript 编写它,并且您将拥有一个在这四种 API 中以相同方式运行的应用上面提到的操作系统。如果您的应用无法使用这些 API,则 Chrome 中的 Native Client 不是正确的选择。

    【讨论】:

    • 很好解释。谢谢!
    【解决方案2】:

    好像没有。 这有点相关:http://ssj-gz.blogspot.com/2013/01/emscripten-qt-progress-faster-better.html。不过,它已被翻译成 javascript,并且仅适用于 QT。而且很慢。

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      相关资源
      最近更新 更多