C++;在Emscripten中使用的损坏名称 我试图用EnScript编写一个简单的C++语言到JavaScript的HeloWord PRRGM。 当我包含一个调用的主函数时,它可以正常工作,例如多函数。 这是我的代码(HelloWorld.cpp)

C++;在Emscripten中使用的损坏名称 我试图用EnScript编写一个简单的C++语言到JavaScript的HeloWord PRRGM。 当我包含一个调用的主函数时,它可以正常工作,例如多函数。 这是我的代码(HelloWorld.cpp),c++,name-mangling,emscripten,C++,Name Mangling,Emscripten,使用修改器导出所有 无论我做什么,这些函数都不会包含在最终的js文件中 据我从中了解,我需要使用导出的函数,以便以后可以使用相同的方法名从JS调用所需的函数,例如“sayHello”。 这正是我以后需要做的 有人能告诉我一个解决方案或任何其他我可能没有想到的可能的选择吗 我想到的损坏名称正确吗?创建一个“extern c”块。在此块中定义要向javascript公开的函数。这些函数应以下划线作为前缀。在其中一个函数中,可以实例化C++类。 这与编写动态库时所采用的方法相同,其优点是,如果您愿意

使用修改器导出所有

无论我做什么,这些函数都不会包含在最终的js文件中

据我从中了解,我需要使用导出的函数,以便以后可以使用相同的方法名从JS调用所需的函数,例如“sayHello”。 这正是我以后需要做的

有人能告诉我一个解决方案或任何其他我可能没有想到的可能的选择吗

我想到的损坏名称正确吗?

创建一个“extern c”块。在此块中定义要向javascript公开的函数。这些函数应以下划线作为前缀。在其中一个函数中,可以实例化C++类。

这与编写动态库时所采用的方法相同,其优点是,如果您愿意,可以在本机程序中重用库。

创建“extern c”块。在此块中定义要向javascript公开的函数。这些函数应以下划线作为前缀。在其中一个函数中,可以实例化C++类。


这与编写动态库时采用的方法相同,其优点是,如果您愿意,可以在本机程序中重用库。

您是否可以尝试
em++HelloWorld.cpp-o HelloWorld.js
?没有更改,这会导致相同的错误:(能否尝试
em++HelloWorld.cpp-o HelloWorld.js
?没有更改,这会导致相同的错误:(在llvm IR位码文件上使用
llvm nm
,以确保按预期导出函数名(无损坏)。然后您的
-s EXPORTED_函数…
标志将按预期运行。在llvm IR位代码文件上使用
llvm nm
确保函数名按预期运行(无损坏)。然后您的
-s EXPORTED_函数…
标志将按预期运行。
#include <stdio.h>

class HelloWorld {
    public: void sayHello() {
        printf("Hello World Klasse! %f", multi(7));
    }

    public: double multi(double x){
        return x * x;
    }
};
emcc -s HelloWorld.cpp -s EXPORTED_FUNCTIONS='["_multi_d10HelloWorldd"]'
emcc -s HelloWorld.cpp -s EXPORT_ALL=1