문제 해결
Android 및 iOS 충돌
일부 Android 및 iOS 환경에서는 런타임 중(예: TestFlight 테스트 중) 충돌이 발생할 수 있습니다. 이는 기본 llama.cpp 라이브러리의 메모리 할당 요구 사항이 해당 플랫폼에서 Unreal Engine의 기본 할당자와 충돌하기 때문에 발생합니다. 다른 플랫폼에서는 FMalloc이 기본적으로 ANSI 할당자를 사용하므로, 이 문제는 Android 및 iOS에만 해당됩니다.
이 문제를 해결하려면 프로젝트의 Target.cs 파일에서 ANSI 할당자를 강제로 적용해야 합니다:
언리얼 엔진 5.5 및 이전 버전:
- 프로젝트는 소스 빌드 엔진(사전 컴파일된 바이너리가 아닌)을 사용해야 합니다.
Target.cs파일에 다음 줄을 추가하세요:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
Unreal Engine 5.6 이상 버전:
- 소스 빌드 및 사전 컴파일된 엔진 빌드 모두에서 작동합니다
Target.cs파일에 다음 두 줄을 추가하세요:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;
이로 인해 Unreal Engine이 Android 및 iOS에서 ANSI 할당자를 사용하도록 강제하며, 이는 llama.cpp에서 사용하는 할당자와 일치합니다.