Build error. WARNING: main() is in the input files, but "_main" is not in EXPORTED_FUNCTIONS

Hello, when i try to build web game i get this error:

set MYDIR=D:\Unity Projects\2023.2.20f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\ 
goto FOUND_MYDIR 
emscripten:WARNING: main() is in the input files, but "_main" is not in EXPORTED_FUNCTIONS, which means it may be eliminated as dead code. Export it if you want main() to run.
warning: invalid item in EXPORTED_RUNTIME_METHODS: getMemory
warning: invalid item in EXPORTED_RUNTIME_METHODS: Pointer_stringify
emcc: warning: warnings in JS library compilation [-Wjs-compiler]
emcc: error: undefined exported symbol: "_gpxGetFreeSoundChannel" [-Wundefined] [-Werror]

I alredy tried to delete Library folder. I use gamedistribution.com SDK plugin.

How to troubleshoot build failures:

Obviously, if there is actionable data, clues or information within any of the errors, fix those problems. Each error entry may have more information than can fit in the console log so select each error and read the expanded view below it.

If that gives you nothing worthwhile (look to Google! You’re never the first one!), then…

First, make a blank project with a single blank scene and prove that it builds successfully.

If the blank project does NOT build, go fix your Unity installation or your other tools, such as Android SDK, NDK, JDK, etc. It may even be necessary to change to a different version of Unity3D. It is generally best to stay with LTS versions of Unity3D.

Until you can build a blank project to the target platform, don’t fiddle with anything else.

Once you can build a blank project, now bisect the problem by bringing over parts of your current project and building it one subsystem at a time, perhaps stubbing things out that might trigger compiler errors.

Most often things that prevent building are third-party libraries such as Firebase.

Once you identify the subsystem, go to the documentation for it and make sure you are doing it correctly.

It may also be helpful to work through a tutorial or two for whatever subsystem is making the build fail.

Android build not building:

Circa July 2022 here have been reports of Unity’s installer failing to install the Android Tools.

Here was how I brought up Unity2020.3.41 and the Android SDK 31 on October 30, 2022 (edited on August 23, 2023 to include Android SDK 33…) (and again for SDK34):

Android Gradle errors and other related stuff:

1 Like

If the SDK does not provide a Unity compatible version, it may not work at all.
If the SDK does not explicitly mention WebGL as a supported platform for its Unity SDK, it will be unlikely to work.

Check Player Settings Managed Stripping Level. Remember the current setting, then set it to Disabled. If this works, change it back to the highest possible level without causing this issue.

The mention of main() is curious, usually only used by standalone / command line programs as the “main” entry point (first method that runs). Perhaps the method can simply be removed, it may be from some unrelated sample code in the SDK. Could be incorrect installation of the SDK, ie you may have to add only a Unity-specific folder and not the entire SDK.

1 Like