我想举一个简短的例子来了解emscripten的工作原理。我想制作一个html,我可以在两个不同的文本框中添加两个数字。我还添加了一个按钮和第三个文本框,在我上面引入两个数字并按下按钮后应该打印结果。
我看到你的项目有一些问题。首先,我认为你应该用EMSCRIPTEN_KEEPALIVE
标记C ++函数,如下所示:
int EMSCRIPTEN_KEEPALIVE int_sum_of_two_numbers(int number1, int number2)
{
int sum;
sum = number1 + number2;
return sum;
}
如果您的函数用于其他函数,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的文章,它与你想要实现的非常相似。我认为这值得一读。