问题标签 [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.
c++ - 如何迭代对象中的属性
我想遍历 V8 C++ 函数中的对象。
节点JS:
我想将“用户”和“密码”,名称和值传递给 C++ 方法,该方法采用以下参数:
名称/值对的数量可能不同,所以我需要一个通用的解决方案。
我能不能得到一些帮助才能走上正轨。
我一直在为 Node 和 V8 编写更简单的 C++ 包装器,但我对这个的想法已经不多了 :)
android - 调用函数时出现 V8 段错误 - 我做错了什么?
我有一个非常旧的 V8 预构建版本,通过 JNI 集成到 Android NDK 中运行良好,一切都很好。
我决定将 V8 升级到更新的代码(4.1.0.22),在 Ubuntu 上构建我自己的 ARM 存档文件,并保持我自己的架构不变,我已经重构了代码,因为 V8 代码库的更改显然需要。
但是,它崩溃了。
与一些更简单的示例相比,我想要构造它的方式可能不同寻常,是拥有一个持久的 V8 实例,我可以初始化一次,然后再进行多次调用。每个调用都提供 Javascript 代码内容和方法名称(通常是“main”)。
所以,这实际上是我的初始化代码,运行一次:
我V8Resources
上面的对象是周围的东西。据我所知,这段代码工作正常。
然后在一段时间后调用的“运行脚本”方法中,我有这个:
通过日志记录确定,这会在 SIGSEGV 处爆炸js_func->Call
,并且在我有任何有用的范围内,提供此堆栈跟踪:
我已经对此进行了相当多的尝试-包括不同的 TryCatch 模式-但无济于事,而且我不相信我实际上正在适当地使用 V8。
这个描述有什么明显的错误吗?
c++ - 预编译 v8 脚本以用于多个隔离
我已经使用嵌入式 v8 实现了一个类似“require”的函数,它加载一个 JavaScript 文件并执行它,但是因为我的程序有多个线程,因此每个线程都有自己的隔离,我必须单独加载和编译文件在指定相同源的每个线程中。如果可能的话,我想以某种方式缓存任何已编译的脚本,以便如果另一个线程(使用另一个隔离)碰巧想要相同的文件,我可以利用某种预编译格式,并只给它运行脚本,而不是必须在需要相同文件的每个隔离内部单独编译它。
c++ - “InitializeBuiltinTypedArrays”上的 V8“Hello World”段错误
此代码在 Windows/Visual Studio 上运行良好,但在 Ubuntu/GCC 上出现段错误。为什么?
我已将 V8 4.5.8 编译为共享库。我已将以下代码放入 CPPUNIT 测试中。
此测试使用以下堆栈出现段错误。这个堆栈的大部分是 CppUnit 和封闭的测试可执行文件。
为什么我会出现段错误,我该如何解决?
我成功的 Windows 构建使用 V8 4.5.8、Windows 8.1、Visual Studio 2013。我不成功的 Ubuntu 构建使用 GCC 4.8.2、Ubuntu 14.04.2。
c++ - 从具有非 ASCII 字符的 wchar_t 创建 v8::String 的安全方法是什么?
我正在为DAB 开发板编写 Node.js 前端,最终将在 Raspberry Pi 上运行。我是一名 Java 和 Web 开发人员,我正在努力使用 C++ 并在不同类型的字符串之间进行转换。
DAB 板带有一个 C++ SDK,具有许多方便的功能。它允许我使用GetTotalProgram()
. 对于我可以调用GetProgramName
以获取程序名称的每个程序:
... 其中mode
表示FM
or DAB
,namemode
表示长名或短名。该程序的名称将在 中返回programName
。
为了将 转换wchar_t *programName
为v8::String
,我找到了我正在使用的这个片段,并了解以下基础知识:
我遍历可用的程序并建立一个v8::Array
:
我从我的 Node 应用程序中调用 C++ 方法:
这主要是可行的,但是当程序的名称包含非 ASCII 字符时,例如Æ
, Ø
, Å
,ARRAY 中的下一个元素有一个 borked name。
console.log
与预期输出相比,这是 Node 片段实际输出 ( ) 的内容:
似乎非 ASCII 字符会导致下一个wcstombs
提前退出,而不是复制后面的字符。
为什么会这样?有没有更好的方法来创建v8::String
我的wchar_t
?
注意:
我现在已经能够将此问题隔离到wcstombs
在 Raspberry Pi 上运行时的方法。以下代码:
在 Mac 上运行时,输出
wcslen of wchar_t array: 10 - strlen of char array: 10
,
但在 Raspberry 上运行时,输出
wcslen of wchar_t array: 10 - strlen of char array: 3
- 也就是说,它只计算字符之前的ø
字符
这看起来类似于这个未回答的问题。
c++ - C++ 范围和 Google V8 脚本上下文
我有以下用 C++ 编写的几乎可以工作的代码:
我有函数 setupJs() 设置了 v8 环境,并且 callJs 应该被多次调用(在工作时,javascript 脚本每次将 var a 递增一)。
如果我把
在 setupJs 中,我可以看到如何调用函数并打印“1”。但是,如果我将函数调用与稍后调用的不同函数一起保留,我会在该行出现 SegfaultHandle<Value> js_result = jsUpdateFunc->Call(jsGlobal, 0, args);
我已经检查过,jsUpdateFunc 和 jsGlobal 都是非空指针
c++ - Chrome V8 引擎选项
我知道 Chrome V8 引擎有一些选项可以使用v8::V8::SetFlagsFromString()
. 但是我在哪里可以找到每个标志的描述?到目前为止,我没有成功通过谷歌搜索此信息。有谁知道描述 V8 标志的文档或其他资源中的位置?
node.js - 如何更改在调试模式下可见的默认行数?
它仅显示当前语句之前和之后的 2 行。每次按 n(下一个)或 c(继续)时,我都想更改行数。引用文档的函数 list(n) 说:
list(5) - 列出带有 5 行上下文的脚本源代码(前后 5 行)
例如执行:
每次进行语句时,我都想更改默认数字。或者,最好的方法是什么?
c++ - V8 编译器错误
我最近设法为 V8 生成了 Visual Studio 项目文件,但它无法编译
当我编译All
解决方案时,它可能会花费大约 10 分钟的时间进行编译,然后出现一堆错误(至少在发布模式下,准确地说是 35)。
例子:
为什么编译不正确?