2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity(iOS) + turbo-jpegで実行時エラーが起きたのでその対処

Last updated at Posted at 2017-08-01

Android/iOS共通プロジェクトで turbo-jpegを使おうとして、iOS上でハマったことをメモ。

環境

  • Unity5.6.2p1
  • iOS 10.3.3

libraryの準備

turbo-jpegの公式source forge( https://sourceforge.net/projects/libjpeg-turbo/files/ )から、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が衝突している様子。

というわけで

Link順序を変更

Xcode の Other Linker Flagsにおいて-lturbojpeg -ljpegを先頭に追記してやることで、まっさきに linkするように修正しました。

libjpegturbo.png

これで問題解決。先述のエラーも出なくなり、無事動作するようになりました。

おわりに

iOSで C/C++な pluginを書くこともレアかもしれませんが、PCや Androidと共通化すると時々ハマるタイプの罠でした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?