问题标签 [embedded-v8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1669 浏览

javascript - V8 的 JavaScript 标准库

在我的应用程序中,我允许用户使用 JavaScript 编写插件。为此,我嵌入了 V8。问题是开发人员不能使用 HTTP、套接字、流、计时器、线程、密码学、单元测试等。

我搜索了 Stack Overflow 并找到了 node.js。它的问题是您实际上可以创建HTTP 服务器,并启动进程和更多我不想允许的事情。另外,node.js 有自己的环境(./node script.js),不能嵌入。而且它不支持 Windows - 我需要它完全跨平台。如果这些问题能够得到解决,那就太棒了:) 但我也对其他框架持开放态度。

有任何想法吗?

谢谢!

0 投票
1 回答
1544 浏览

javascript - 如何在 Google V8 引擎中创建一个 utf8 字符串

你好,我使用嵌入在 C++ 程序中的 v8 引擎,我遇到了一个字符串问题。

嗯,当然 v8 引擎完全支持 utf8 字符串,但我只是不知道如何。

但是,结果是唯一的字符“D”,因为 String::New 只接受 char* 和 utf_16*

我检查了 v8 文档,发现无法制作 utf8 字符串,有人可以帮助我吗?

0 投票
5 回答
1950 浏览

c++ - 将 V8 包装在一个类中时出现分段错误?

我想在一个项目中使用 Google 的 Javascript Engine V8,并试图为引擎编写一个包装类。部分代码是从 V8 发行版的 samples/shell.cc 复制而来的。

但是,它只是因分段错误而中止,我不知道为什么,尽管问题正在发生v8::internal::Top::global_context()(由于 invalid context,这似乎是 NULL).. 代码本身对我来说看起来不错,但也许我做了一些非常愚蠢的事情:-)。

我的代码中的分段错误发生在v8::Script::Compile.

问题代码(更新):https ://gist.github.com/4c28227185a14bb6288c

感谢Luis G. Costantini R.'s Answer,(不再中止)中不再存在问题Set,但是,公开的名称仍然不可用,并将导致 ReferenceError ...

0 投票
1 回答
673 浏览

c++ - 在 V8 中使用访问器的问题

我正在围绕 V8 引擎编写一个包装类,以便最终我能够做这样的事情

到目前为止,我可以创建类并向它们添加函数并且它工作得很好,但是我遇到了添加变量的问题。

我的班级模板是这样存储的

我尝试像这样添加一个访问器:

编译这段代码给了我一个错误,即 v8::Object 没有 SetAccessor 函数(尽管我已经看到 doxygen 文档另有说明)。

所以我的问题是:我该如何解决这个问题?是否可以将对象转换为 ObjectTemplate?

0 投票
1 回答
5398 浏览

javascript - 在 V8 中,我将如何在其 JavaScript 对应对象被垃圾收集后删除包装的 C++ 对象?

假设我有本教程中提供的代码。

当 V8 的 GC 破坏 JavaScript 包装器时,我将如何修改它以便Point创建的 C++ 对象调用其析构函数并从内存中删除?

0 投票
5 回答
3898 浏览

c++ - 嵌入 Mono 与 Google V8?

我们想将脚本添加到项目中。

我们正在犹豫使用哪个脚本引擎。我在过去使用过 V8,它非常令人印象深刻。我也使用过 Mono,但仅限于玩具项目或原型。

约束是:

  1. 执行速度。
  2. 易于集成。
  3. 必须在 Windows 上工作。
  4. 64 位支持。
  5. 在 Visual Studio 下编译。

哪种发动机最适合?

(有没有使用 Visual Studio 在 win64 下编译 Mono 的教程?是否有一些包含 Lib 文件和 DLL 的包?)

0 投票
1 回答
1009 浏览

javascript - 在 QTCreator C++ 控制台项目中包含 Google 的 V8 Javascript 引擎

如何在 QTCreator 控制台项目中包含 Google 的 V8 Javascript 引擎?

我已经编译了 V8,并且玩过示例 shell 和 d8 开发人员 shell。我想开始编写代码以在 QTCreator 中使用这个库。

我是 QTCreator 的新手,我的问题是尝试设置 .pro 文件,以便 QTCreator 正确编译它。现在,我只想让 hello world 示例工作。

Google V8 中的 hello world 示例: http ://code.google.com/apis/v8/get_started.html

任何帮助表示赞赏。

0 投票
4 回答
17351 浏览

javascript - 使用 Google V8 实现最快的 Javascript 对象序列化

我需要序列化具有 1-100 个混合类型属性的中等复杂对象。

最初使用 JSON,然后我切换到 BSON,它稍微快一点。

编码 10000 个样本对象

我想要一个数量级的增长;它对系统的其他部分产生了非常糟糕的影响。

迁移到 BSON 的部分动机是需要对二进制数据进行编码,因此 JSON(现在)不适合。而且因为它只是跳过了对象中存在的二进制数据,所以它在那些基准测试中是“作弊”的。

剖析的 BSON 性能热点

  • (不可避免?)将 UTF16 V8 JS 字符串转换为 UTF8。
  • BSON 库中的 malloc 和字符串操作

BSON 编码器基于 Mongo BSON 库。

原生 V8 二进制序列化器可能很棒,但由于 JSON 是原生的并且可以快速序列化,我担心即使这样也无法提供答案。也许我最好的选择是优化 BSON 库的性能,或者编写我自己的 plus 找出更有效的方法来从 V8 中提取字符串。一种策略可能是向 BSON 添加 UTF16 支持。

所以我来这里是为了想法,也许是理智检查。

编辑

添加了 MessagePack 基准测试。这是从原始 JS 修改为使用 BinaryF。

C++ MessagePack 库可能会提供进一步的改进,我可能会单独对其进行基准测试以直接与 BSON 库进行比较。

0 投票
3 回答
28334 浏览

java - 如何在 Java 应用程序中嵌入 V8?

我正在寻找一种将 Google JavaScript 引擎 V8 嵌入到我的 Java 应用程序中的解决方案。

你有一些解决方案吗?

0 投票
1 回答
595 浏览

javascript - v8 无法从在新上下文中编译的脚本访问属性

我创建了一个简单的“require”机制(https://gist.github.com/1031869),其中包含的脚本被编译并在新的上下文中运行。但是,当我在包含的脚本中调用函数并传递它this时,包含的脚本看不到其中的任何属性。