egametang/ET · error · Exception

the modified Unity.IL2CPP.dll of {curVersionStr} isn't found

Error message

the modified Unity.IL2CPP.dll of {curVersionStr} isn't found. please install hybridclr in 2019.4.40 first, then switch to your unity version

What it means

Thrown during RunInitLocalIl2CppData on Unity 2019.x when the pre-modified Unity.IL2CPP.dll for the exact version string cannot be found on disk. Unity 2019 requires a patched IL2CPP executable that HybridCLR only ships for specific versions; the installer expects it to have been created by installing on 2019.4.40 first.

Source

Thrown at Packages/cn.etetet.hybridclr/Scripts/Editor/Share/Installer/InstallerController.cs:294

            // replace libil2cpp
            string dstLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp";
            BashUtil.CopyDir($"{libil2cppWithHybridclrSourceDir}", dstLibil2cppDir, true);

            // clean Il2cppBuildCache
            BashUtil.RemoveDir($"{SettingsUtil.ProjectDir}/Library/Il2cppBuildCache", true);
            if (version.major == 2019)
            {
                string curVersionStr = version.ToString();
                string srcIl2CppDll = GetUnityIl2CppDllModifiedPath(curVersionStr);
                if (File.Exists(srcIl2CppDll))
                {
                    string dstIl2CppDll = GetUnityIl2CppDllInstallLocation();
                    File.Copy(srcIl2CppDll, dstIl2CppDll, true);
                    Debug.Log($"copy {srcIl2CppDll} => {dstIl2CppDll}");
                }
                else
                {
                    throw new Exception($"the modified Unity.IL2CPP.dll of {curVersionStr} isn't found. please install hybridclr in 2019.4.40 first, then switch to your unity version");
                }
            }
            if (HasInstalledHybridCLR())
            {
                WriteLocalVersion();
                Debug.Log("Install Sucessfully");
            }
            else
            {
                Debug.LogError("Installation failed!");
            }
        }
    }
}

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. Install Unity 2019.4.40 alongside your target version, run HybridCLR/Installer there to generate the modified Unity.IL2CPP.dll, then switch back to your actual 2019.x version and re-install.
  2. Confirm the version string returned by version.ToString() matches the filename HybridCLR expects (check GetUnityIl2CppDllModifiedPath output).
  3. If a compatible patched DLL is available from your team or CI cache, copy it to the expected source path before re-running the installer.
  4. Consider upgrading the project to Unity 2020+ where this special-case patching is no longer required.
Defensive patterns

Strategy: validation

Validate before calling

// For Unity 2019.x, check the patched DLL exists before installing
if (Application.unityVersion.StartsWith("2019"))
{
    var version = new Installer.UnityVersion(Application.unityVersion);
    string dllPath = GetUnityIl2CppDllModifiedPath(version.ToString());
    if (!File.Exists(dllPath))
        Debug.LogError("Patched IL2CPP.dll missing at " + dllPath + ". Install on 2019.4.40 first.");
}

Prevention

When it happens

Trigger: version.major == 2019 and GetUnityIl2CppDllModifiedPath(curVersionStr) returns a path whose file does not exist (File.Exists is false). The modified DLL is a version-specific artifact that must be generated or downloaded separately.

Common situations: Using a Unity 2019 version other than 2019.4.40 without first running the installer under 2019.4.40 to produce the patched DLL; upgrading from one 2019.x patch to another without re-patching; the patched DLL was deleted or never copied into the expected location.

Related errors


AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13). Data as JSON: /api/errors/613e424b437462ac. Report an issue: GitHub.