首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入“wasi_snapshot_preview1”时出错。“proc_exit”:未知导入。期望函数

导入“wasi_snapshot_preview1”时出错。“proc_exit”:未知导入。期望函数
EN

Stack Overflow用户
提问于 2021-07-16 04:52:39
回答 1查看 976关注 0票数 2

我使用Clang编译以下C文件,

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int length(char* s) {
    return strlen(s);
}
int matrix(int row, int col) {
    printf("this is matrix\n");
    int a[row][col];
    int b[col][row];
    int r[row][row];
    for(int i = 0; i<row; i++) {
        for(int j = 0; j<col; j++) {
            a[i][j] = rand()%1000+1;
            b[j][i] = rand()%1000+1;
        }
    }
    for(int i = 0; i<row; i++) {
        for(int j = 0; j<row; j++) {
            r[i][j] = 0;
            for(int k = 0; k<col; k++) {
                r[i][j] += a[i][k] * b[k][j];
            }
        }
    }
    
    return r[row-1][row-1];
}
int main(){
    int a = matrix(10, 12);
    printf("a: %d\n", a);
    printf("length: %d\n", length("abcd"));
    return 0;
}

我的编译命令如下所示

代码语言:javascript
复制
clang --sysroot home/user/wasi-sdk-12.0/share/wasi-sysroot/ \
-Wl,--export-all \
-o matrix.wasm matrix.c

我使用wasm2wat将wasm文件转换为wat格式。该文件包含以下导入,

代码语言:javascript
复制
  (import "wasi_snapshot_preview1" "proc_exit" (func $__wasi_proc_exit (type 2))) 
  (import "wasi_snapshot_preview1" "fd_seek" (func $__wasi_fd_seek (type 3)))
  (import "wasi_snapshot_preview1" "fd_write" (func $__wasi_fd_write (type 4)))
  (import "wasi_snapshot_preview1" "fd_close" (func $__wasi_fd_close (type 5))) 
  (import "wasi_snapshot_preview1" "fd_fdstat_get" (func $__wasi_fd_fdstat_get (type 6)))

我和wasmer一起运行了with文件,

代码语言:javascript
复制
wasmer run matrix.wasm --invoke matrix 10 12

然后出现错误,

代码语言:javascript
复制
error: failed to run `matrix.wasm`
╰─> 1: Error while importing "wasi_snapshot_preview1"."proc_exit": unknown import. Expected Function(FunctionType { params: [I32], results: [] })

我可以成功地运行它

代码语言:javascript
复制
wasmer matrix.wasm

我不知道如何用这些导入行正确地调用特定的导出函数。当我删除它们时,程序进行得很好。但是,因为我删除了fd_write行,所以它没有打印任何内容。如何成功地执行此程序?

代码语言:javascript
复制
wasmer matrix.wasm --invoke matrix 10 12
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-20 16:08:27

似乎有一些进口,瓦斯默不承认为瓦西。你能贴出跑步的结果吗?

代码语言:javascript
复制
wasmer inspect matrix.wasm
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68403592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档