UE4 调试第三方库相关问题

UE4 调试第三方库相关问题

UE4 可以集成第三方库(包含自己编写的库),往往需要UE4和第三方库一起调试,因此需要使用第三方库的调试版本。以版本UE4.9.2来研究相关问题。

UE4 默认支持的运行库类型

UE4的编译器默认不支持使用debug版本的第三方库。只有在解决方案配置为DebugBuildConfiguration.bDebugBuildsActuallyUseDebugCRT=true的情况下支持使用debug版本的第三方库。
在这里插入图片描述
在源码文件VCToolchain.cs有相关设置:默认选项为Arguments.Append(" /MD"),即多线程DLL[/MD]
在这里插入图片描述

多线程[/MT]:0
多线程调试[/MTd]:1
多线程DLL[/MD]:2
多线程调试DLL[/MDd]:3
// Specify the appropriate runtime library based on the platform and config.
			if( CompileEnvironment.Config.bUseStaticCRT )
			{
				if( CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Debug && BuildConfiguration.bDebugBuildsActuallyUseDebugCRT )
				{
					if( WindowsPlatform.bUseVCCompilerArgs )
					{ 
						Arguments.Append(" /MTd");
					}
					else
					{
						AddDefinition( Arguments, "_MT" );
						AddDefinition( Arguments, "_DEBUG" );
					}
				}
				else
				{
					if( WindowsPlatform.bUseVCCompilerArgs )
					{ 
						Arguments.Append(" /MT");
					}
					else
					{
						AddDefinition( Arguments, "_MT" );
					}
				}
			}
			else
			{
				if( CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Debug &&BuildConfiguration.bDebugBuildsActuallyUseDebugCRT )
				{
					if( WindowsPlatform.bUseVCCompilerArgs )
					{ 
						Arguments.Append(" /MDd");
					}
					else
					{
						AddDefinition( Arguments, "_MT" );
						AddDefinition( Arguments, "_DEBUG" );
						AddDefinition( Arguments, "_DLL" );
					}
				}
				else
				{
					if( WindowsPlatform.bUseVCCompilerArgs )
					{ 
					   //默认情况下,设置为此选项
						Arguments.Append(" /MD");
					}
					else
					{
						AddDefinition( Arguments, "_MT" );
						AddDefinition( Arguments, "_DLL" );
					}
				}
			}

UE4链接调试版第三方静态库问题

UE4 C++ 模块链接静态库的时候出现错误:
检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”
检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”
原因主要是编译项目与项目中所使用的链接库debug/release版本不对应和运行时设置不一致。

解决方案

  1. 修改源码VCToolchain.cs的相应的内容:注释掉条件(默认情况下解决方案配置Debug才可以链接/MDd的三方库)。
if( /*CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Debug &&*/ BuildConfiguration.bDebugBuildsActuallyUseDebugCRT )
{
	if( WindowsPlatform.bUseVCCompilerArgs )
	{ 
		Arguments.Append(" /MDd");
	}
	else
	{
		AddDefinition( Arguments, "_MT" );
		AddDefinition( Arguments, "_DEBUG" );
		AddDefinition( Arguments, "_DLL" );
	}
}
  1. 修改XXXXEditorTarget.cs
public XXXXEditorTarget(TargetInfo Target)
{
    Type = TargetType.Editor;
    BuildConfiguration.bDebugBuildsActuallyUseDebugCRT = true;
}
  1. 设置解决方案配置为Debug Editor
    在这里插入图片描述

原文链接

UE4 调试第三方库相关问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值