我无法弄清楚如何为以下函数调用JS生成的代码:
void printmap(const map<string, vector<string> > &ms)
{
map<string, vector<string> >::const_iterator m1i;
for (m1i = ms.begin(); m1i != ms.end(); m1i++)
{
printf("%s:\n", m1i->first.c_str());
vector<string>::const_iterator m2i;
for (m2i = m1i->second.begin(); m2i != m1i->second.end(); m2i++)
printf("\t%s\n", m2i->c_str());
}
}
更具体地说,JS看起来准备'ms'参数是什么意思?
你不能在JS中调用你的printmap()
。
WebAssembly目前defines number types only:32 / 64bit整数/浮点数。由于这个限制,Emscripten编译的WASM代码可以通过以下类型与JS交互:
我不知道如何,但指针和引用表现不同,thus you cannot use a reference type to interact with JS。
正如你在这里猜测的那样,没有办法操纵像map<string, vector<string>
这样复杂的C ++类型。
总结一下,我有几点建议:
void printmap(const map<string, vector<string> > &ms)
至
void printmap(const map<string, vector<string> > *ms)
ms
编写一个init函数,以便在JS中执行类似的操作:let map_ptr = module._initmap();
...Do something..
module._printmap(map_ptr);
ms
制作getter和setter函数。