我正在尝试使用 emscripten 将一个简单的 HelloWorld Prgramm 从 C++ 编译为 Javascript。当我包含一个调用例如多功能的主函数时,它工作正常。这是我的代码(HelloWorld.cpp)。
#include <stdio.h>
class HelloWorld {
public: void sayHello() {
printf("Hello World Klasse! %f", multi(7));
}
public: double multi(double x){
return x * x;
}
};
但是,如果我不包含主函数,则 emcc 编译总是会退出
错误根:没有要处理的函数。确保您阻止 LLVM 将它们视为已死(如有必要,请使用 EXPORTED_FUNCTIONS,请参阅常见问题解答)
我知道“EXPORTED_FUNCTIONS”选项,它告诉编译 .js 文件中应该包含哪些函数。我尝试了各种不同的东西:
使用修饰名称,据我了解,名称应该是“_multi_d10HelloWorldd”。我也试过没有类名和其他一些组合。
emcc -s HelloWorld.cpp -s EXPORTED_FUNCTIONS='["_multi_d10HelloWorldd"]'
使用修饰符 EXPORT_ALL
emcc -s HelloWorld.cpp -s EXPORT_ALL=1
无论我做什么,这些功能都不会包含在最终的 js 文件中。
根据我从EMCC 常见问题解答中了解到的情况,我需要使用 EXPORTED_FUNCTIONS,以便稍后从 JS 调用所需的函数,例如“sayHello”,取消使用相同的方法名称。这正是我以后需要做的。
有人可以指出我可能没有想到的解决方案或任何其他可能的选择吗?
我想到的名字是否正确?