Troubleshooting
Build
g++ errors on Linux
Install the C++ compiler for your distribution: g++ (Debian/Ubuntu), gcc-c++ (Fedora),
sys-devel/gcc (Gentoo).
ApplicationMain.exe : fatal error LNK1120: 1 unresolved externals
A stale object file. Rebuild clean:
lime test cpp -clean
# or delete export/obj and build again
The build takes 5–10 minutes
Expected for a first C++ build. Later builds reuse the hxcpp compile cache
(HXCPP_COMPILE_CACHE); CI detects and restores it explicitly.
A library "downgraded" itself
Several dependencies are pinned Git forks (lime, openfl, flixel, hxcpp, hxvlc,
funkin.vis, grig.audio). Running haxelib install <something> can flip the active
version of a transitive dependency back to a release build. Check haxelib list, then
re-run setup/windows.bat or setup/unix.sh.
MSVC picks the wrong toolchain on Windows
Run setup/windows-msvc-fix.ps1 (or setup/windows-msvc.bat). It patches the assembler
and C++17 flag handling that hxcpp otherwise gets wrong on recent Visual Studio installs.
Flash / AIR aborts with a Lime version check
Both SWF targets require -D disable-version-check. AIR also needs
-DAIR_SDK=<path to AIRSDK>. The SWF builds additionally depend on the
haxelib patches — if you delete one of those files,
Flash stops compiling.
Android: dlopen failed: library "libc++_shared.so" not found
The APK installs but dies at launch with:
dlopen failed: library "libc++_shared.so" not found: needed by
/data/app/.../quack.fnf.phoenix-.../lib/arm64/liblime.so in namespace clns-N
Lime's prebuilt liblime.so is linked against the shared C++ runtime, but nothing in
Lime's Android target copies that runtime into the app. project.hxp solves it with the
configureAndroidRuntime pre-build callback running setup/android-copy-stl.sh.
If you still hit it:
-
Rebuild (
lime build android) so the callback runs. The NDK is taken fromANDROID_NDK_ROOT, falling back tolime config ANDROID_NDK_ROOT— make surelime setup androidhas been run. -
Verify the APK:
unzip -Z1 <apk> | grep 'lib/.*\.so'must listlibc++_shared.sofor every ABI. CI does this in its Verify Android APK native libs step. -
Run the script manually to see what it resolves:
sh setup/android-copy-stl.sh --ndk "$ANDROID_NDK_ROOT" \build/release/android/bin/app/src/main/jniLibs arm64-v8a armeabi-v7a
Is my haxelib patch actually being used?
haxelib run lime build windows -Dofficial
grep -rn "source/source-haxelib-patches" build/release/haxe/*.hxml # must appear after -cp source/
Brute-force check: introduce a syntax error in the patch file and rebuild — the compiler
should stop inside source/source-haxelib-patches/, not inside ~/.haxelib.
Runtime
Linux: libvlc.so.5: file format not recognized
That error comes from the old hxCodec instructions. Current builds use hxvlc;
install your distribution's VLC/libvlc development packages instead.
Android: "doesn't actually have a JSON, nor voices/instrumental files" on a valid song
Known cosmetic issue (medium-low severity). Accept the dialog — playback works.
Android: asks for image/sound permissions despite "manage all files"
Known low-severity issue with the scoped-storage permission flow in
mobile.StorageUtil.
The game crashes instead of showing the crash screen
CRASH_HANDLER must be enabled (it is by default) and the build must define
openfl-enable-handle-error, which project.hxp sets in configureCompileDefines().
Custom project.hxp edits that drop that define disable the whole crash UI.
Scripts do nothing
Check the modding level the binary was built with: -DMODDING_LEVEL=0 removes both VMs,
=1 removes Python. Behind a disabled flag the callbacks do not exist at all, so a .py
file is simply never read. See Project configuration.