使用emscripten将c ++代码编译为javascript,以便将两个数字相加。实践

问题描述 投票:2回答:1

我想举一个简短的例子来了解emscripten的工作原理。我想制作一个html,我可以在两个不同的文本框中添加两个数字。我还添加了一个按钮和第三个文本框,在我上面引入两个数字并按下按钮后应该打印结果。

javascript html c++ emscripten
1个回答
1
投票

我看到你的项目有一些问题。首先,我认为你应该用EMSCRIPTEN_KEEPALIVE标记C ++函数,如下所示:

int EMSCRIPTEN_KEEPALIVE int_sum_of_two_numbers(int number1, int number2)
{
    int sum;
    sum = number1 + number2;
    return sum; 
}

来自Emscripten documentation

如果您的函数用于其他函数,LLVM可能会内联它,它不会在JavaScript中显示为唯一函数。通过使用EMSCRIPTEN_KEEPALIVE定义函数来防止内联

这允许Javascript代码找到您的C ++函数。

除此之外,当您提到导出函数_ => _int_sum_of_two_numbers时,用于编译项目的命令似乎还有一个额外的下划线int_sum_of_two_numbers字符。所以你应该使用:

EXPORTED_FUNCTIONS='["int_sum_of_two_numbers"]'

最后一点,你可以将main()函数留空。该函数内的代码与您的Web应用程序无关。

我刚才写了一篇关于integrating WebAssembly with Angular的文章,它与你想要实现的非常相似。我认为这值得一读。

© www.soinside.com 2019 - 2024. All rights reserved.