如何使用C++使用Emscripten在JavaScript中分配变量并将它们保持在范围内?
问题描述:
我想用emscripten和C++做一些库测试。我需要让一些JavaScript变量在C++调用之间保持不变,但我一直无法弄清楚如何去做。如何使用C++使用Emscripten在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
的输出是所述第一呼叫正确,但第二个呼叫抛出一个没有定义的错误。我需要一些方法来保持这个变量在范围之间的调用,所以我可以使用它。
任何帮助?谢谢。
答
您可以删除var
之前宣布x
:
#include <emscripten.h>
int main() {
EM_ASM(
x = 1;
console.log(x);
);
EM_ASM(
console.log(x);
);
return 0;
}
这似乎与EMCC V1.35工作