Unity(iOS) + turbo-jpeg에서 런타임 오류가 발생했기 때문에 해결

Android/iOS 공통 프로젝트에서 turbo-jpeg를 사용하려고 하고, iOS상에서 빠진 것을 메모.

환경


  • Unity5.6.2p1
  • iOS 10.3.3

  • library 준비



    turbo-jpeg의 공식 source forge( htps://그래서 넉넉하다. 네 t / p 로지 cts / ぃ bj ぺ g t r 보 / 후 ぇ s / )에서 Mac/iOS 공유의 .dmg를 download.

    Unity Plugins/iOS/아래
  • libjpeg.a
  • libturbojpeg.a

  • copy.

    그대로 Unity+Xcode로 Build하면



    실행 중 (turbo) jpeg에서 읽고 쓰는 등을 시도하면
    tjGetErrorStr:JPEG parameter struct mismatch: library thinks size is 600, caller expects 632
    어쨌든 화가 나서 실행할 수 없습니다. 구조체의 byte packing 주위일까라고 생각 turbo-jpeg를 자전 build해 여러가지 시험해 보았습니다만 개선하지 않고.

    자주(잘) 조사해 보면, turbo-jpeg와 Unity인가 어딘가가 가지고 있는 jpeglib가 충돌하고 있는 모습.

    그래서

    링크 순서 변경



    Xcode 의 Other Linker Flags 에 -lturbojpeg -ljpeg 를 선두에 추기해 주는 것으로, 곧바로 link 하도록(듯이) 수정했습니다.



    이것으로 문제 해결. 앞에서 설명한 에러도 나오지 않게 되어 무사하게 동작하게 되었습니다.

    결론



    iOS에서 C/C++인 plugin을 쓰는 것도 희귀할지도 모릅니다만, PC나 Android와 공통화하면 가끔 빠지는 타입의 함정이었습니다.

    좋은 웹페이지 즐겨찾기