Unity用のdylibを使ったC++Pluginを作るときに困った
dylib使ったUnity用のC++Pluginを作った際に、DllNotFoundExceptionエラーが出て困ったのでメモ
Xcode Projectの作成
- create new Xcode project > Bundleで新しいプロジェクトを作る
- C++のソースコードを適当に書いて追加する
- 使いたいdylib(hoge.dylib)もプロジェクトに追加する
- dylibを Build Phases の Copy Bundle Resources にも追加する
- ビルドする
Unity Projectにの作成
- Unityで新しいプロジェクトを作る
- ビルドしたBundleをプロジェクトに追加する
- 適当にスクリプトを書く
- 実行すると DllNotFoundException error が出てしまう
TestNativeが依存ライブラリのhoge.dylibを読み込めずエラーがでてしまうらしい
プラグインの依存パスを書き換える
TestNativeがhoge.dylibを読み込めずエラーが出るので依存パスを書き換える
プラグインの依存パス確認
パスの確認には otool を使う
$ cd TestNative.bundle/Contents/MacOS
$ otool -L TestNative
プラグインの依存パス設定
パスの書き換えには install_name_tool を使う
$ install_name_tool -add_rpath @loader_path/.. TestNative
$ install_name_tool -change "@executable_path/hoge.dylib" "@rpath/Resources/hoge.dylib" TestNative
プラグインの依存パスをもう一度確認
$ otool -L NativePlugin
Unityを実行
書き換わっていることを確認できたらUnityを再起動して実行する
参考サイト
http://blog.shogonir.jp/entry/2017/10/26/030028
https://qiita.com/omochimetaru/items/21d662b8df8bce1bc5ca
https://qiita.com/itoru257/items/d36b4e3908a39bfbbb18
https://xanadu6291.stars.ne.jp/?p=726
Author And Source
この問題について(Unity用のdylibを使ったC++Pluginを作るときに困った), 我々は、より多くの情報をここで見つけました https://qiita.com/__S/items/1561cb6a437019853bae著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .