如何在网络装配中使用数组?

时间:2019-01-23 15:29:34

标签: webassembly

我使用网站将C程序编译为wasm

https://mbebenita.github.io/WasmExplorer/

每当我尝试在webassembly中创建数组并使用它时,运行程序时都会收到“ TypeError:索引超出范围”。我目前正在使用其他解决方案,并成功运行该程序。

有效的解决方案:将数组作为参数(指针)传递

int prime(int array[], int n) {


  for (int x=0; x<n; x++) {
    array[x] = 1;
  }

  int count = 0;  

  for(int i=2; i<n; i++) {
    if (array[i] == 1) {
      count += 1;
      for (int j=2*i; j<n; j+=i){
        array[j] = 0;
      }
    }
  }
  return count;
}

在javascript中导入prime.wasm文件后,我必须调用如下函数:

console.log(prime(0, 100));

以及我想要的东西(在wasm函数中创建一个数组):

int prime(int n) {

  bool array[n];

  for (int x=0; x<n; x++) {
    array[x] = true;
  }


  int count = 0;  


  for(int i=2; i<n; i++) {
    if (array[i] == true) {
      count += 1;
      for (int j=2*i; j<n; j+=i){
        array[j] = false;
      }
    }
  }
  return count;
}

在javascript中导入wasm文件后,我想调用如下函数:

console.log(prime(100));

我该如何解决此问题并最终在wasm函数中使用数组而不必传递任何指针?

0 个答案:

没有答案