UE4 C++源码 在Visual studio 2015中使用过程发现添加 try catch 之后打包通不过。追溯错误提示是C++的 try catch 代码。网上查找之后发现
https://blog.csdn.net/SC32024826/article/details/78710672
public class XXXXXX: TargetRules
{
public XXXXX(TargetInfo Target) : base(Target)
{
……
Target.bForceEnableExceptions = true;
}
然后没有报错能生成文件。后续再观察。using UnrealBuildTool;
using System.Collections.Generic;
public class MyModule : ModuleRules
{
public MyModule(ReadOnlyTargetRules Target) : base(Target)
{
// Settings go here
}
}
这样的结构可以直接使用
Target.bEnableExceptions = true;
但是我使用的代码层次是
using UnrealBuildTool;
using System.Collections.Generic;
public class XXXTarget : TargetRules
{
public XXXTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
ExtraModuleNames.Add("szmUEDesign");
}
}
并没有ReadOnlyTargetRules。(搜索到这边其实应该解决问题了,可是自己忽略重点继续花时间搜索)
后面直接在源代码搜索TargetInfo 。 发现TargetInfo 的成员变量都跟异常不相关。但是,在它的成员变量在的文件"UeBulidTarget.cs"能搜索到bEnableExceptions 。发现 bEnableExceptions出现在以下环境
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引擎。这时候打包和运行都正常了。
来源:oschina
链接:https://my.oschina.net/u/4314730/blog/3890740