UE4 C++源码 在Visual studio 2015中使用过程发现添加 try catch 以后打包通不过。追溯错误提示是C++的 try catch 代码。网上查找以后发现
https://blog.csdn.net/SC32024826/article/details/78710672 html
public class XXXXXX: TargetRules
{
public XXXXX(TargetInfo Target) : base(Target)
{编辑器
……ide
Target.bForceEnableExceptions = true;函数
}网站
而后没有报错能生成文件。后续再观察。using UnrealBuildTool; using System.Collections.Generic; public class MyModule : ModuleRules { public MyModule(ReadOnlyTargetRules Target) : base(Target) { // Settings go here } }
这样的结构能够直接使用 ui
Target.bEnableExceptions = true;
可是我使用的代码层次是this
using UnrealBuildTool; using System.Collections.Generic; public class XXXTarget : TargetRules { public XXXTarget(TargetInfo Target) : base(Target) { Type = TargetType.Game; ExtraModuleNames.Add("szmUEDesign"); } }
并无ReadOnlyTargetRules。(搜索到这边其实应该解决问题了,但是本身忽略重点继续花时间搜索)spa
后面直接在源代码搜索TargetInfo 。 发现TargetInfo 的成员变量都跟异常不相关。可是,在它的成员变量在的文件"UeBulidTarget.cs"能搜索到bEnableExceptions 。发现 bEnableExceptions出如今如下环境.net
GlobalCompileEnvironment.bEnableExceptions = Rules.bForceEnableExceptions || Rules.bBuildEditor;
此处的Rules定义以下日志
public ReadOnlyTargetRules Rules;
追述ReadOnlyTargetRules 到TargetRulers.cs
public partial class ReadOnlyTargetRules { …… /// <summary> /// The writeable TargetRules instance /// </summary> TargetRules Inner; …… public bool bForceEnableExceptions { get { return Inner.bForceEnableExceptions; } } …… } TargetRules定义 public abstract class TargetRules { …… /// <summary> /// Enable exceptions for all modules. /// </summary> [RequiresUniqueBuildEnvironment] public bool bForceEnableExceptions = false; }
到这边就明白调用规则了。 直接在本身的bulid文件增长如下代码,启用异常检测机制。
using UnrealBuildTool; using System.Collections.Generic; public XXXTarget : TargetRules { public XXXTarget(TargetInfo Target) : base(Target) { Type = TargetType.Game; ExtraModuleNames.Add("szmUEDesign"); this.bForceEnableExceptions = true; } }
4.18(不含)以前在 bulid.cs文件添加 UEBuildConfiguration.bForceEnableExceptions = true;或者 UEBuildConfiguration.bEnableExceptions = true; 。 UE4.18以后使用 this.bForceEnableExceptions = true;解决异常
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2019-04-02问题:代码添加 this.bForceEnableExceptions = true; UE4.19编辑器环境能够运行,可是打包失败。 解答:该问题是由于使用ue4官方下载生成好的环境。 当调用 this.bForceEnableExceptions 时,由于和编辑好的环境冲突,因此失败。 解决的办法是下载UE4官方源代码,而后创建sln文件,本地从新生成。 而后项目引用生成后的ue4引擎。这时候打包和运行都正常了。