作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚浏览了 Calling JavaScript from C/C++并按照他们的指示进行。我可以从 C++ 调用 Js 方法
C++
#include <iostream>
#include <string>
#include <emscripten.h>
#include <emscripten/bind.h>
EM_JS(void, call_js, (), {
jsMethod();
});
bool callJsBack()
{
call_js();
return true;
}
EMSCRIPTEN_BINDINGS(module)
{
emscripten::function("callJsBack", &callJsBack);
}
Js
<script>
var Module = {
onRuntimeInitialized: function() {
console.log('Module.callJsBack(): ' + Module.callJsBack());
}
};
function jsMethod() {
alert('I am a js method!');
}
</script>
我想使 jsMethod() 参数化(想在调用 jsMethod() 时从 C++ 传递字符串)。
function jsMethod(msg) {
alert(msg);
}
我没有找到任何实现此要求的示例或建议。
最佳答案
找到答案:
C++
EM_JS(void, call_js_agrs, (const char *title, int lentitle, const char *msg, int lenmsg), {
jsMethodAgrs(UTF8ToString(title, lentitle), UTF8ToString(msg, lenmsg));
});
bool callJsBackWithAgrs()
{
const std::string title = "Hello from C++";
const std::string msg = "This string is passed as a paramter from C++ code!";
call_js_agrs(title.c_str(), title.length(), msg.c_str(), msg.length());
return true;
}
EMSCRIPTEN_BINDINGS(module)
{
emscripten::function("callJsBackWithAgrs", &callJsBackWithAgrs);
}
Js:
var Module = {
onRuntimeInitialized: function() {
Module.callJsBackWithAgrs();
}
};
function jsMethodAgrs(title, msg) {
alert(title + '\n' + msg);
}
完整的工作示例: CallJsFromCpp
关于emscripten - 如何使用 EM_JS 使用参数从 C++ 调用 javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59532379/
我试图用字符串数组作为参数从C / C++调用JS函数。 这是我的示例代码: main.c: #include #include EM_JS(void, call_myFunc, (int arg
我正在尝试使用 webassembly,并且我制作了一个玩具模块,可以在 C 中蛮力素数 extern "C" { bool isPrime(int n) { for (int i = 2;
我刚刚浏览了 Calling JavaScript from C/C++并按照他们的指示进行。我可以从 C++ 调用 Js 方法 C++ #include #include #include #
我是一名优秀的程序员,十分优秀!