V8 console.log无法打印

时间:2019-08-16 20:55:10

标签: javascript c++ v8 embedded-v8

我正在尝试将v8嵌入到我的应用程序中,弄乱了看v8环境中包含的内容(duktape不包含控制台实现),但是看起来v8确实包含了一个实现,但是当我调用{{1 }}它不打印任何内容,而是仅打印未定义的内容(我假设它是console.log的返回值),那么如何将默认的console.log输出与std::cout链接起来呢

这是我目前的代码,我正在使用默认的hello world代码进行稍微修改。

console.log

我正在使用预构建的v8二进制文件here

2 个答案:

答案 0 :(得分:3)

尝试以下操作:

  • #include "src/debug/interface-types.h"
  • 定义自己的“控制台代表”类,该类源自debug::ConsoleDelegate
  • 覆盖您感兴趣的任何方法,例如void Log(const debug::ConsoleCallArguments& args, const v8::debug::ConsoleContext&) override;
  • 实例化它,并在创建您的debug::SetConsoleDelegate(isolate, &your_console_delegate);后致电Isolate

要查看示例,请从https://cs.chromium.org/chromium/src/v8/src/d8/d8-console.h?l=14&gsn=D8Console开始并跟踪其使用位置。

答案 1 :(得分:0)

因此,对于将来要处理此问题的任何人,这就是我用来修复它的过程。

  • here下载源代码,只需要src文件夹。
  • 将其提取并链接到您的项目中,除了捆绑软件之外,您还可以在其中放置供应商代码
  • 将其放在src文件夹中,因为否则它的包含内容将无法使用
  • 您需要创建一堆include目录才能进行编译,并包含v8/srcv8
  • 确保将其与nuget软件包链接,您可能不必这样做,一台计算机需要它,而另一台则不需要。
  • 您不需要生成builtins-generated/bytecodes-builtins-list.h