menu
 

Community Q&A

Welcome to Audiokinetic’s community-driven Q&A forum. This is the place where Wwise and Strata users help each other out. For direct help from our team, please use the Support Tickets page. To report a bug, use the Bug Report option in the Audiokinetic Launcher. (Note that Bug Reports submitted to the Q&A forum will be rejected. Using our dedicated Bug Report system ensures your report is seen by the right people and has the best chance of being fixed.)

To get the best answers quickly, follow these tips when posting a question:

  • Be Specific: What are you trying to achieve, or what specific issue are you running into?
  • Include Key Details: Include details like your Wwise and game engine versions, operating system, etc.
  • Explain What You've Tried: Let others know what troubleshooting steps you've already taken.
  • Focus on the Facts: Describe the technical facts of your issue. Focusing on the problem helps others find a solution quickly.

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

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.
by Benoit S. (Audiokinetic) (16.0k 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.
...