【问题标题】:Embedding Mozilla's JavaScript Engine in C++在 C++ 中嵌入 Mozilla 的 JavaScript 引擎
【发布时间】:2020-10-01 13:21:35
【问题描述】:

我想将 Mozilla 的 SpiderMonkey 嵌入我的独立 C++ 程序(在 Visual Studio 2019 中)。我查看了所有文档等等,但问题是(或者我需要的是):

  • 通过 C++ 执行 JavaScript 脚本。伪代码为Value* result = SpiderMonkeyEvaluate(fileString);

就是这样。问题是,在文档中说我需要构建整个 Mozilla 的 Firefox 浏览器(不少于千兆字节)并下载 Mercurial 并打开命令提示符并创建目录等以及所有令人作呕的东西。我只需要能够:

#include <jsapi.h>

并执行所有必要的 C++ 到 JS(反之亦然)操作。

我认为我不需要下载并构建整个 FireFox 浏览器来执行此操作(我可能错了?)。

【问题讨论】:

    标签: javascript c++ firefox spidermonkey


    【解决方案1】:

    UPDATE - 这个答案是错误的。稀疏结帐实际上会下载所有历史记录。必须使用narrowhg ext,hg.mozilla.org 存储库不支持。

    下面的答案是错误的。

    你可以使用 mercurial sparse checkout 来获取 js/src 文件夹。 (但由于 js/src 文件夹的所有历史,它仍然可能相当大) 这将只是 js/src 文件夹的历史记录。

    您需要一个比 3 岁(4.3 或更高)更新的 mercurial 版本

     mkdir spidermonkey
     cd spirdermonkey
     hg init
     hg debugsparse --include js/src
     hg pull https://hg.mozilla.org/releases/mozilla-release -u
    

    【讨论】:

    • 这怎么接近我的问题?即使我得到了源代码,我应该如何构建它?我确实有来源。我只需要找到一种方法来获取包含目录和 .lib 文件以链接到我的 VS 2019 项目中。
    【解决方案2】:

    如果有人仍然对 Windows 上的蜘蛛猴感兴趣,您可以按照此处的构建说明进行操作:

    https://firefox-source-docs.mozilla.org/js/build.html

    在此处使用构建工具:

    https://firefox-source-docs.mozilla.org/setup/windows_build.html

    如果您非常细致,则无需下载整个 FireFox 代码库,但如果您这样做,您的生活会更轻松。为了只构建spidermonkey(加上js命令行),一定要激活一个特定的MOZCONFIG ac_add_options --enable-application=js 在调用任何 mach 命令之前将其放入其中。

    注意:如果您打算使用 Visual C++ 编译器而不是 clang-cl,则仅限于 78 版,否则您必须自己弄清楚如何修改标头。

    作为参考,这是我用来在 Windows 10 上成功构建 spidermonkey 81.0.2 的配置:

    # Build only the JS shell
    ac_add_options --enable-application=js
    
    # Enable optimization for speed
    ac_add_options --enable-optimize
    # Enable the debugging tools: Assertions, debug only code etc.
    # For performance testing you would probably want to change this
    # to --disable-debug.
    ac_add_options --disable-debug
    ac_add_options --disable-jemalloc
    ac_add_options --prefix=$MY_PREFIX
    mk_add_options MOZ_MAKE_FLAGS="-j4"
    # Use a separate objdir for optimized builds to allow easy
    # switching between optimized and debug builds while developing.
    mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-opt-@CONFIG_GUESS@
    

    如果你使用这个配置,在你成功构建之后, 然后导航到@TOPSRCDIR@/obj-opt-@CONFIG_GUESS@ 并执行 mozmake 安装,它将您需要的所有文件“安装”到 $MY_PREFIX

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2011-07-16
      • 1970-01-01
      • 2010-09-15
      • 2012-03-07
      • 2013-09-09
      相关资源
      最近更新 更多