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 have noticed compilation errors in "C:\Program Files (x86)\Audiokinetic\Wwise2023.1.8.8601\SDK\include\AK\Tools\Common\AkBitFuncs.h" when building against prebuilt x64 libs with clang (ie. https://clang.llvm.org) in wwise 2023.1.8.8601

This appears to be due to the fact that _MSC_VER is #defined in clang.
Please see the following documentation for more information 
https://clang.llvm.org/docs/UsersManual.html#microsoft-extensions


For instance, the following code snippet does not compile with clang due to the fact that the MSVC-specific _BitScanForward function is not defined.
Note that the commented-out code can be used as a workaround but requires modifying headers in the wwise distribution :-/.

Please note that I have tried to disable MS compatibility and extensions using the following switches to no avail.
    -fno-ms-compatibility
    -fno-ms-extensions

I thought it was worth bringing this issue to the attention of the AK developers in order to hopefully avoid this problem for future releases.

-------------------------------------------------------------------------------------------
//#if defined _MSC_VER && !defined(__clang__)
#if defined _MSC_VER
    AkForceInline AkUInt32 AkBitScanForward(AkUInt32 in_bits)
    {
        unsigned long ret = 0;
        _BitScanForward(&ret, in_bits);
        return in_bits ? ret : 32;
    }

#elif defined(__clang__) || defined (__GNUC__)
    AkForceInline AkUInt32 AkBitScanForward(AkUInt32 in_bits)
    {
        return in_bits ? __builtin_ctz(in_bits) : 32;
    }
#else
    AkForceInline AkUInt32 AkBitScanForward(AkUInt32 in_bits)
    {
        if (in_bits == 0) return 32;
        AkUInt32 ret = 0;
        if ((in_bits & 0x0000FFFFULL) == 0) { ret += 16; in_bits >>= 16; }
        if ((in_bits & 0x000000FFULL) == 0) { ret += 8;  in_bits >>= 8; }
        if ((in_bits & 0x0000000FULL) == 0) { ret += 4;  in_bits >>= 4; }
        if ((in_bits & 0x00000003ULL) == 0) { ret += 2;  in_bits >>= 2; }
        if ((in_bits & 0x00000001ULL) == 0) { ret += 1;  in_bits >>= 1; }
        return ret;
    }
#endif

in General Discussion by alphablit_matt (120 points)

1 Answer

0 votes
Thanks for the report. We'll look into this and resolve it in a future release.
by ak_dcrooks (220 points)
...