I am trying to build the AWS C++ SDK to use with the Unreal game engine. I have been using it for a while, however after recently updating my Unreal plugin with the latest SDK components, I ran into issues (crashes) because Unreal has its own custom memory management which does not seem compatible with the AWS SDK's.
To resolve this I have tried to override AWS's memory manager with one compatible with Unreal, by implementing Aws::Utils::Memory::MemorySystemInterface
and calling Aws::Utils::Memory::InitializeAWSMemorySystem(AWSMemoryManager);
This, however, doesn't work unless the SDK has been built with the CUSTOM_MEMORY_MANAGEMENT
flag. So, I went back to the SDK and tried to build it with custom memory management on with the following commands:
cmake.exe "../aws-sdk-cpp" -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="core;firehose;cognito-identity" -DCUSTOM_MEMORY_MANAGEMENT=1 -DCPP_STANDARD=17 -DENABLE_UNITY_BUILD=1
MSBuild.exe ALL_BUILD.vcxproj -p:Configuration=Release
However, this seems to result in aws-core failing its unit tests. I get the following errors:
...\AWS\sdk\aws-sdk-cpp\aws-cpp-sdk-core-tests\RunTests.cpp(40): error : Expected equality of these values: [...\AWS\sdk\membuild\aws-cpp-sdk-core-tests\aws-cpp-sdk-core-tests.vcxproj]
memorySystem.GetCurrentOutstandingAllocations()
Which is: 37
0ULL
Which is: 0
...\AWS\sdk\aws-sdk-cpp\aws-cpp-sdk-core-tests\RunTests.cpp(40): error : Expected equality of these values: [...\AWS\sdk\membuild\aws-cpp-sdk-core-tests\aws-cpp-sdk-core-tests.vcxproj]
memorySystem.GetCurrentBytesAllocated()
Which is: 3472
0ULL
Which is: 0
...\AWS\sdk\aws-sdk-cpp\aws-cpp-sdk-core-tests\RunTests.cpp(40): error : Value of: memorySystem.IsClean() [...\AWS\sdk\membuild\aws-cpp-sdk-core-tests\aws-cpp-sdk-core-tests.vcxproj]
Actual: false
Expected: true
Does anyone have any clue why these unit tests are failing and how I can go about resolving it?