godot-cpp
godot-cpp copied to clipboard
Web export fails due to Uncaught LinkError
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
I have tried re-compiling my binaries using Emscripten 3.1.64 (as found here), but I get the exact same error...
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
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.