【问题标题】:Alternative to v8 for exposing C++ objects to JavaScript (on PowerPC)用于将 C++ 对象公开给 JavaScript(在 PowerPC 上)的 v8 替代方案
【发布时间】:2012-06-22 14:03:00
【问题描述】:

我需要向神奇的 JavaScript 世界公开 C++ 类(打包为共享库)。

最明显的解决方案是使用 Node.js/v8。问题是它必须在 PowerPC 上运行(请不要在此使用 cmets...)而且 - 唉! - v8 不能在 PowerPC 上运行(v8-powerpc 项目似乎已经死了)。

我正在尝试了解是否有任何其他可行的解决方案,目前一些可能性是:

  1. emscripten,将 LLVM 位码转换为 JavaScript;
  2. WebKit 的 JavaScriptCore,虽然我不确定它是否会工作(无论如何我都会在 PowerPC 上安装 WebKit)

我不是 JavaScript 专家,实际上我感到很迷茫,所以这些是我的问题:

  1. emscripten 是一个有效的解决方案吗? (你用过吗?)
  2. 谁能告诉我有关如何使用 JavaScriptCore 将 C++ 暴露给 JavaScript 的任何文档?
  3. 还有其他选择吗,和/或您会采用哪一种?

非常感谢,

涟漪

【问题讨论】:

  • 为了清楚起见,我们的目标是使用 C++ 库编写一个 JavaScript 应用程序(在 JS 引擎上运行)。

标签: c++ webkit powerpc javascriptcore emscripten


【解决方案1】:

Qt 有一个在 powerpc 上运行的 webkit 端口,它有一个 javascript 引擎,允许您调用 C++ 代码。

Qt: Making Applications Scriptable

【讨论】:

    【解决方案2】:

    您可以使用 Emscripten。我已经使用它并且正在使用它。 问题是:

    • JS/C 社区对 IMO 有点怀疑/对 Emscripten 持怀疑态度,因此您可能不会在那里获得太多支持(通常 #emscripten IRC 频道非常有帮助)。
    • Emscripten 编译代码相当容易/很好,但您需要对 C 有深入的了解才能获得有效的解决方案。您可能必须重写代码的某些部分才能使其按您的 JavaScript 引擎预期的方式工作(例如使用 main_loop、回调等)。
    • 使用 Node.js 您也可以尝试使用同步文件 api(请参阅 http://nodejs.org/api/fs.html) - 但我担心您必须更改 Emscripten 文件访问权限仿真,因为它现在主要是为浏览器使用而编码的。

    【讨论】:

      【解决方案3】:

      JavaScriptCore 有JSObjectMakeFunctionWithCallback()。不过,看起来这可能涉及 很多 样板代码来转换参数和异常。

      【讨论】:

        【解决方案4】:

        现在 Node.js 可以在 PowerPC 上运行。请参阅this github link(我认为它可以在任何带有运行 linux 的 powerpc 处理器的系统上运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-15
          • 1970-01-01
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          • 2021-04-16
          • 1970-01-01
          • 2010-10-31
          相关资源
          最近更新 更多