javascript - 如何使用 C++ 使用 Emscripten 在 JavaScript 中分配变量并将它们保留在范围内?

标签 javascript c++ emscripten

我正在尝试使用 emscripten 和 c++ 进行一些库测试。我需要在 C++ 调用之间保留一些 JavaScript 变量,但我不知道如何做到这一点。

我认为这要么是我缺少的一些简单的东西,要么就是不可能。这是一个独立的程序,没有其他任何东西在运行。以下是一个最小的示例:

#include <emscripten.h>

int main() {
    //this works and prints 1
    EM_ASM(
        var x = 1;
        console.log(x);
    );
    //this throws an error 'x is not defined'
    EM_ASM(
            console.log(x);
    );
    return 0;
}

我使用以下命令编译并运行代码:

emcc main.cpp
node a.out.js

第一次调用的输出是正确的,但第二次调用抛出未定义的错误。我需要某种方法来将该变量保持在调用之间的范围内,以便我可以使用它。

有什么帮助吗?谢谢。

最佳答案

您可以在声明 x 之前删除 var:

#include <emscripten.h>

int main() {
    EM_ASM(
        x = 1;
        console.log(x);
    );
    EM_ASM(
        console.log(x);
    );
    return 0;
}

这似乎适用于 emcc v1.35

[编辑]

请参阅 Clint 的解释和更好的答案

关于javascript - 如何使用 C++ 使用 Emscripten 在 JavaScript 中分配变量并将它们保留在范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878747/

相关文章:

c++ - 返回可中断线程的函数

c++ - 使用移位位的问题(检查二进制数是否是回文)

javascript - 当 asm.js 比普通 JS 代码更快时,我为什么要在 JS 中编写新代码?

c++ - Emscripten:警告:未解析的符号:_ZTVN10__cxxabiv120__si_class_type_infoE

javascript - 通过 slider 更改 Highchart 图形振幅

javascript - 范围声明 json 对象的问题

javascript - HTML/Javascript 中的字体选择器

c++ - 从 Glib 移植到 Qt

emscripten - 如何从 javascript 访问 Emscripten 类型数组?

javascript - 如何修复不响应它的 javascript 的元素?