본문 바로가기

프로그래밍/개발메모

유니티 Building Library\Bee\artifacts\Android\fy9m9\libil2cpp.so failed with output: ld.lld: error: undefined symbol: ~~ 오류

본문: 

https://velog.io/@thisisone/unity-%EB%B9%8C%EB%93%9C-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0%EA%B8%B0-Building-LibraryBeeartifactsAndroidfy9m9libil2cpp.so-failed-with-outputld.lld-error-undefined-symbol-jslibcallaction-referenced-by-Assembly-CSharp1.cpp9123

 

unity 빌드 오류 해결기 / Building Library\Bee\artifacts\Android\fy9m9\libil2cpp.so failed with output: ld.lld: error: und

안드로이드 빌드 해보까 하니 바로 에러가나며 빌드가 안되었다.기존엔 빌드를 mono 로 하고 있었는데 il2cpp 로 고치니 문제 생겼습니다.에러메세지를 대충보고 구글검색을 시작했으나 NDK 버그라

velog.io

 

간단히 말에서

 undefined symbol: ~~~ 

이부분이 중요한 ~~~ 가 함수명이고 외부에 본체가 있는 함수를 의미합니다

보안문제로 애플과 구글은 li2cpp 방식으로 전환하지 한참되었고 이것은

외부에 있는 라이브러리를 호출하는 것을 금지합니다.

빌드할때 모두 포함시켜 유저에게 전달 되었을땐 내용을 바꿔치지 못하게 하는 용도인거 같습니다.

빌드시간이 많이 느려지는군요

 

[DllImport("__Internal")]
	private static extern void jslib_hello();

저는 이런식으로 선언된 함수를 암드로이드 + li2cpp 로 빌드하려고할때 실패했구요

위함수는 webgl 에서 사용하는 코드인데 안드로이드에서도 남아있었군요

#if 를 이용해 주석처리해줬습니다.

 

잘못된 방향으로 검색하면 안드로이드 NDK 문제나 버전 문제등이 나오는데 

이러면 시간이 많이 낭비될 수 있으니 

 undefined symbol: 

뒤에 나오는 함수 이름이 내소스에 존재하는지 확인해보시기 바랍니다.