I found solution
emcc Main.cpp TestClass.cpp -s ALLOW_MEMORY_GROWTH=1 -o test.js -s
EXPORTED_FUNCTIONS="['_main']" -s EXPORTED_RUNTIME_METHODS="['cwrap']" -s
WASM=1
Στις Πέμπτη, 30 Σεπτεμβρίου 2021 στις 9:13:01 π.μ. UTC+3, ο χρήστης G. G.
έγραψε:
> Compile two .cpp files to webassembly.
>
> I have two cpp files, Main.cpp and TestClass.cpp and one .h file
> TestClass.h.
>
> When i compile files
> emcc -Os Main.cpp TestClass.cpp -s WASM=1 -s SIDE_MODULE=1 -s
> ALLOW_MEMORY_GROWTH=1 -o ns.wasm
> and run WebAssembly.instantiateStreaming i get error:
>
> Error: Uncaught (in promise): LinkError: WebAssembly.instantiate(): Import
> #0 module="env" function="__stack_pointer"
> error: imported mutable global must be a WebAssembly.Global object
>
>
> If i change #include "TestClass.h" to #include "TestClass.cpp" in Main.cpp
> and compile with
> emcc -Os Main.cpp -s WASM=1 -s SIDE_MODULE=1 -s ALLOW_MEMORY_GROWTH=1 -o
> ns.wasm
> then WebAssembly.instantiateStreaming works!
>
>
> I want use #include "TestClass.h" in Main.cpp. What am I doing wrong ?
> Thanks.
>
>
> -------------------------------------
> Main.cpp
> -------------------------------------
> #include "TestClass.h"
> #include <emscripten.h>
> using namespace std;
>
> extern "C"
> {
> int EMSCRIPTEN_KEEPALIVE testwasm()
> {
> TestClass tc;
> return tc.Test();
> }
> }
>
> int main()
> {
> }
>
> -------------------------------------
> TestClass.h
> -------------------------------------
>
> #pragma once
> class TestClass
> {
> public:
> int Test();
> };
>
> -------------------------------------
> TestClass.cpp
> -------------------------------------
> #include "TestClass.h"
>
> int TestClass::Test()
> {
> return 100;
> }
>
>
> -------------------------------------
> Code i use to load webassembly
> -------------------------------------
> var importObject = {
> module: {},
> env: {
> memory: new WebAssembly.Memory({initial: 256, maximum: 256})
> }
>
> (async () => {
> const fetchPromise = fetch('ns.wasm');
> const { instance } = await
> WebAssembly.instantiateStreaming(fetchPromise, importObject);
> const result = instance.exports.testwasm as CallableFunction;
> ...
> })();
>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/8bbe2420-4155-4abb-98b4-9010f63cce87n%40googlegroups.com.