godot-cpp icon indicating copy to clipboard operation
godot-cpp copied to clipboard

Web export fails due to Uncaught LinkError

Open 2shady4u opened this issue 1 year ago • 1 comments

Godot version

v4.3-stable

godot-cpp version

4.3

System information

Windows 10

Issue description

Exporting to web fails because of following error:

TypeError: a.default.detectStore(...) is undefined h1-check.js:1:1301
Uncaught (in promise) LinkError: imported function 'env._ZNSt3__29to_stringEx' signature mismatch

I have tried exporting with both threads enabled and disabled and I get the same issue. I used Firefox, Chrome and Vivaldi and all of them report the same error.

My build system uses Emscripten v3.1.39 and can be found here: https://github.com/2shady4u/godot-sqlite

Steps to reproduce

  • Run the minimal reproduction project
  • Open the 'Web Developer Tools' in your browser.
  • Observe the error.

Minimal reproduction project

demo.zip

2shady4u avatar Aug 18 '24 14:08 2shady4u

I have tried re-compiling my binaries using Emscripten 3.1.64 (as found here), but I get the exact same error...

2shady4u avatar Aug 18 '24 14:08 2shady4u

Possibly related issue: https://github.com/godotengine/godot/issues/96492 .

We should test if this is a regression from https://github.com/godotengine/godot/pull/93853

Faless avatar Sep 02 '24 21:09 Faless

I believe I found the problem - there's a compilation flag mismatch between godot-cpp and godot proper, meaning that -sWASM_BIGINT is not present (among a number of other flags). This flag changes the representation of 64-bit integers in the compiled code, resulting in types like long long having different signatures between the builds.

The solution is to add this flag to the compilation, but there should probably be a review of the rest of the flags as well. There's also some discrepancies when using the CMake support in godot-cpp, but that's probably better as a separate issue.

Nihlus avatar Sep 03 '24 17:09 Nihlus