gpt4 book ai didi

emscripten - 如何使用 EM_JS 使用参数从 C++ 调用 javascript 方法

转载 作者:行者123 更新时间:2023-12-05 02:57:55 26 4
gpt4 key购买 nike

我刚刚浏览了 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com