我正在尝试使用 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/