c++14 - 如何在 WebAssembly 中使用向量(C++ STL)

标签 c++14 webassembly

#include <iostream>
#include<vector>
using namespace std;

vector<int> ver;

int pushData(int n)
{
    for(int i=0;i<n;i++)
    {
        ver.push_back(i);
    }
}

我想从 JS 调用 pushData 函数并将一些数据推送到向量“ver”并稍后使用它。
请解释如何使用 WebAssembly 做到这一点。

最佳答案

我试图通过使用以下答案来回答您的问题:
https://stackoverflow.com/a/46748966/544721

解决办法:

#include<vector>
const int SIZE = 10;
std::vector<int> data(10);

void add(int value) { 
  for (int i=0; i<SIZE; i++) {
    data[i] = data[i] + value;
  }
}

int* getData() {
  return &(data[0]);
}

和js:
var wasmModule = new WebAssembly.Module(wasmCode);
var wasmInstance = new WebAssembly.Instance(wasmModule, wasmImports);

var offset = wasmInstance.exports.getData();

var linearMemory = new Uint32Array(wasmInstance.exports.memory.buffer, offset, 10);
for (var i = 0; i < linearMemory.length; i++) {
  linearMemory[i] = i;
}

wasmInstance.exports.add(10);

for (var i = 0; i < linearMemory.length; i++) {
  log(linearMemory[i]);
}

WasmFiddle:https://wasdk.github.io/WasmFiddle//?wuycy

但看起来有一些链接器错误:
line 2: Uncaught LinkError: WebAssembly Instantiation: Import #9 module="env" function="__dso_handle" error: global import must be a number

任何人都可以帮助使这个 C++ 代码在 WasmFiddle 中运行吗?

关于c++14 - 如何在 WebAssembly 中使用向量(C++ STL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50220966/

相关文章:

c++ - 是否有可能知道非固定枚举器的范围?

c++ - static_if 会弃用模板特化吗?

c++ - 如何对 std::index_sequence 进行前缀和?

c++ - std::make_unique<T[]>(size) 值初始化

c++ - 当析构函数调用自动变量修改函数返回值时,MSVC14.1和gcc8.3之间观察到差异

go - 如何使用字符串作为参数从 Go 调用 Rust 函数?

javascript - 如何从Wasm调用外部js函数?

c++ - 我如何告诉 em++ 找到 WS2tcpip.h

c++ - Webassembly内存管理和指针

c++ - 是否有一个选项不自动将所有前导下划线 _ 导出到 emscripten 中的函数?