Audiokinetic's Community Q&A is the forum where users can ask and answer questions within the Wwise and Strata communities. If you would like to get an answer from Audiokinetic's Technical support team, make sure you use the Support Tickets page.

Audiokinetic.build.cs BUG

0 votes

We've found sth interesting in Audiokinetic.Build.cs in line 136:

This is:

if (Target.Configuration == UnrealTargetConfiguration.Debug)
{
    akPlatformLibPath = akDir + akPlatformLibDir + @"Profile\lib";
}
This should be:
if (Target.Configuration == UnrealTargetConfiguration.Debug)
{
    akPlatformLibPath = akDir + akPlatformLibDir + @"Debug\lib";
}
Without this, we get:
AkSoundEngine.lib(AkMonitor.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Engine.h.obj
1>AkSoundEngine.lib(AkMonitor.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Engine.h.obj
1>AkSoundEngine.lib(CommandDataSerializer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Engine.h.obj
1>AkSoundEngine.lib(CommandDataSerializer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Engine.h.obj
1>CommunicationCentral.lib(Serializer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Engine.h.obj
1>CommunicationCentral.lib(Serializer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Engine.h.obj
1>SFLib.lib(SFLib.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Engine.h.obj
1>SFLib.lib(SFLib.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Engine.h.obj

Isn't it a bug ?

Cheers!

Marcin

asked Jun 5, 2014 in General Discussion by Marcin P. (150 points)

1 Answer

0 votes
This was done on purpose. As you can see, forcing the use of the debug libraries causes link errors.

Epic has decided to link against the Release version of the CRT, even for the Debug configuration. Our own Debug libraries still use the Debug CRT, so trying to use them in UE causes link errors.

The profile libraries still allow you to connect the Wwise Profiler to your game. The only difference between Debug and Profile is that the Profile libraries are optimized, so we decided to use them for the Debug configuration, avoiding the link error.

If you absolutely need to use the Debug version of our libraries, Epic has exposed an option in their build pipeline to enable the use of the Debug CRT, thus allowing the use of our Debug libraries. Simply set bDebugBuildsActuallyUseDebugCRT to true in BuildConfiguration.cs. This is not the recommended method, though, as the performance hit is significant.
answered Jun 5, 2014 by Benoit S. (Audiokinetic) (16,020 points)
It turns out, that bDebugBuildsActuallyUseDebugCRT was silently switched to true when we integrated Scaleform to our engine.

So, If some of your clients also use Scaleform you may warn them about it.
...