MALOUDA-PSA 2024-04-23 11:32 采纳率: 90.9%
浏览 3
已结题

webassembly编译运行报错

 23 EMSCRIPTEN_KEEPALIVE
 24 int EncryptionAES(const char * strSrc, const char * gkey, const char* giv, char** str)
 25 {
 26     ...   ...
 27         EM_ASM_({
 28             printString(Pointer_stringify($0));
 29             ],str);
 30             
 31         return 1;
 32 } 
// 编译为js:
var ASM_CONSTS = {
  92708: ($0) => { { printString(Pointer_stringify($0)); ] },  
 92748: ($0) => { { printString(Pointer_stringify($0)); ] }
};

em++ 编译后运行 html 报错:

Uncaught SyntaxError: Unexpected token ']' (at webassemencdec.js:884:58)

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-23 11:32
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,看起来在您的WebAssembly模块中存在一个JavaScript调用,但是这个调用中的语法有误,导致了HTML页面在加载并执行编译后的代码时抛出了Unexpected token '['的错误。

    错误出在第29行,这行代码应该是想将某个值传递给JavaScript环境中的printString函数,然后结束匿名函数。然而,代码中的'['可能是多余的,它不应该出现在那里。修复这个问题的方法是删除这个多余的字符。

    这里是修改后的相关部分的代码:

    23 EMSCRIPTEN_KEEPALIVE
    24 int EncryptionAES(const char * strSrc, const char * gkey, const char* giv, char** str)
    25 {
    26     ...   ...
    27         EM_ASM_({
    28             printString(Pointer_stringify($0));
    29             // 删除这里的'['
                  printString(Pointer_stringify($1)); // 假设giv也需要传递给printString
    30         });
    31 
    32         return 1;
    33 }
    

    确保在修复这一行之后,所有必要的参数都被正确地传递给EM_ASM_。如果giv变量也需要打印,像上面那样添加另一个printString调用,并确保传递正确的参数(这里假设它是 $1)。

    接下来,重新编译您的WebAssembly模块。执行emcc命令,例如:

    emcc your_source_file.c -s WASM=1 -o webassembly_decoded.js
    

    确保替换 your_source_file.c 为你实际的源文件名。执行上述命令后,新的编译结果应该不会引发SyntaxError

    如果你的问题依然存在,可能需要检查其他部分的代码,或者提供更多的上下文以便我能更准确地诊断问题。在进行调试时,确保查看整个错误堆栈,因为有时一个错误可能会掩盖其他潜在的错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥20 用51单片机控制急停。
  • ¥15 孟德尔随机化结果不一致
  • ¥15 在使用pyecharts时出现问题
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用