【Unity】解决IL2CPP打包报错Building xxx\ei6vj\wncp_y_vm6.lump.obj failed with output: qtky_vm6.lump.cpp

IL2CPP打包Windows exe时报错 Building Library\Bee\artifacts\WinPlayerBuildProgram\ei6vj\wncp_y_vm6.lump.obj failed with output: qtky_vm6.lump.cpp 是由MSVC升级导致的,可以通过升级Unity版本解决,详见:

https://forum.unity.com/threads/workaround-for-building-with-il2cpp-with-visual-studio-2022-17-4.1355570/

若不便升级Unity版本,可以将以下代码放到项目的任意脚本中临时解决问题:

// Adding this script to anywhere within your project.
// FIX ERROR: Building Library\Bee\artifacts\WinPlayerBuildProgram\ei6vj\wncp_y_vm6.lump.obj failed with output: qtky_vm6.lump.cpp
// FROM: https://forum.unity.com/threads/workaround-for-building-with-il2cpp-with-visual-studio-2022-17-4.1355570/
// SEE: https://developercommunity.visualstudio.com/t/stdext::hash_compare-has-been-removed-in/10182319
//      https://issuetracker.unity3d.com/issues/il2cpp-windows-builds-fails-when-using-vs-2022-17-dot-4-0-preview

#if UNITY_EDITOR
using System;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;

public class MsvcStdextWorkaround : IPreprocessBuildWithReport
{
    
    
    const string kWorkaroundFlag = "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS";

    public int callbackOrder => 0;

    public void OnPreprocessBuild(BuildReport report)
    {
    
    
        var clEnv = Environment.GetEnvironmentVariable("_CL_");

        if (string.IsNullOrEmpty(clEnv))
        {
    
    
            Environment.SetEnvironmentVariable("_CL_", kWorkaroundFlag);
        }
        else if (!clEnv.Contains(kWorkaroundFlag))
        {
    
    
            clEnv += " " + kWorkaroundFlag;
            Environment.SetEnvironmentVariable("_CL_", clEnv);
        }
    }
}
#endif // UNITY_EDITOR

猜你喜欢

转载自blog.csdn.net/qq_21397217/article/details/129085799