# Emscripten linking errors

**URL:** <https://qa.fmod.com/t/emscripten-linking-errors/22429>\
**Category:** FMOD Engine\
**Created:** [December 18, 2024, 2:58am UTC](https://qa.fmod.com/t/emscripten-linking-errors/22429 "2024-12-18T02:58:10Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![pmdevita](https://avatars.discourse-cdn.com/v4/letter/p/d26b3c/32.png) [@pmdevita](https://qa.fmod.com/u/pmdevita)\
**Post date:** [December 7, 2025, 10:36pm UTC](https://qa.fmod.com/t/emscripten-linking-errors/22429/7 "2025-12-07T22:36:42Z")

</div>

Through the work of @bitbrain and sphynx, we have gotten FMOD to compile and boot on the web without crashing. However, we are unable to get audio playback, it looks like there’s some issue with FMOD starting the Web Audio context through its JS glue code. This might be a result of us compiling it as a side module, the emscripten docs mention

> …only the singleton main module includes the JavaScript environment and side modules are pure WebAssembly modules.

Any ideas on what to do from here? The `web-support` branch on GitHub should now compile and the demo Godot project should be able to export with it using the web template with threads off and gdextension support on.

> **[Dynamic Linking — Emscripten 4.0.22-git (dev) documentation](https://emscripten.org/docs/compiling/Dynamic-Linking.html#overview-of-dynamic-linking)**

bitbrain also started a thread here that might be a good place to move to.

> <https://github.com/utopia-rise/fmod-gdextension/pull/210>
>
> !\[Screenshot 2024-04-06 133323\](https://github.com/utopia-rise/fmod-gdextension/…assets/822035/1f853826-2f89-420e-a4ce-0d0d77e9dbfa)
> 
> \---
> Closes #50 
> \---
> This PR aims to add support for web support via \`wasm\`.
> 
> \## Todo
> 
> \- \[x\] update \`SConstruct\` to consider \`web\` as a platform
> \- \[x\] make \`scons platform=web\` pass & build \`libGodotFmod.web.template\_debug.wasm32.wasm\` correctly
> \- \[\] Update documentation for how to build for web (requires \`Emscripten\`)
> \- \[\] Update Github Action to build for web
> \- \[x\] Solve issue around bank file scanning (specifically file callback logic https://github.com/utopia-rise/fmod-gdextension/blob/master/src/callback/file\_callbacks.cpp)
> \- \[\] Solve \`Uncaught TypeError: Module.FMOD\_JS\_MixerFastpathFunction is not a function
> onmessage\` when trying to play sounds
> 
> \## Known issues
> 
> \- on Firefox, the GDExtension just hangs and crashes the browser. This is a known bug with wasm: https://github.com/webcompat/web-bugs/issues/127798

> [@Trying to build FMOD HTML5 as gdextension](https://qa.fmod.com/t/trying-to-build-fmod-html5-as-gdextension/23774):
>
> Hello, Naturally, gdextension .wasms are side modules, while Godot itself runs as a wasm main module. My understanding is that currently, the FMOD HTML5 assumes it is always run from a main module. This means, trying to use the FMOD HTML5 wasm in a side module will not work, and one gets errors such as Uncaught TypeError: Module.FMOD\_JS\_MixerFastpathFunction is not a function What is the recommendation here? Does Godot Engine need a new way of using wasm into its main module? Is there anythin…

---

_[View the full topic](https://qa.fmod.com/t/emscripten-linking-errors/22429)._
