こんにちわ、オオバです。

iOS向けネイティブプラグインを書いたあと、
Unityでビルドすると以下のエラーに見舞われました。

Undefined symbols for architecture arm64  

arm64bitアーキテクチャとか言われても...
と困っているあなたの悩みを解決します。

ただの参照エラーだった

【エラー】Undefined symbols for architecture arm64がXcodeで出力したときの対応_0

今回対応した内容は以上です。

なぜあのエラー内容から
この対応で解決するのか、詳細を解説していきます。

この記事の内容

エラーは全部読むことが大事

【エラー】Undefined symbols for architecture arm64がXcodeで出力したときの対応_1

Xcodeから出力されたエラー全文
Undefined symbols for architecture arm64:  
  "_OBJC_CLASS_$_MFMailComposeViewController", referenced from:  
      objc-class-ref in CustomPlugin.o  
ld: symbol(s) not found for architecture arm64  
clang: error: linker command failed with exit code 1 (use -v to see invocation)  

まずエラーの1行目が気になりますよね。

Undefined symbols for architecture arm64:  

一件arm64に対応しないといけない雰囲気を感じますが
そうではありません。

単純な参照エラーでした

【エラー】Undefined symbols for architecture arm64がXcodeで出力したときの対応_2

エラーは全文と言わず、
先の方まで読んでみましょう。

"_OBJC_CLASS_$_MFMailComposeViewController", referenced from:  
      objc-class-ref in CustomPlugin.o  

この辺りに答えが書いてあります。
CustomPlugin.oが、MFMailComposeViewControllerを参照できていない
というのが今回のエラーの原因です。

MFMailComposeViewController
検索するとMessageUI.frameworkが必要そうです。

Unityプロジェクトに必要なフレームワークファイルを追加で解決

【エラー】Undefined symbols for architecture arm64がXcodeで出力したときの対応_3

Plugins/iOS/MessageUI.frameworkという形で、
Unityプロジェクト内に配置してあげれば、
Xcode書き出し時に自動で含めてくれます。

Xcodeのビルドで必要なframeworkの場所や、
Unityプロジェクトでの導入方法については
コチラの記事にまとめています。

まとめ : Undefined symbols for architecture arm64の直し方

【エラー】Undefined symbols for architecture arm64がXcodeで出力したときの対応_4

記事の内容を簡単にまとめます。

こんな感じです。

Xcodeビルドにまつわるトラブルは絶えません。
Xcodeのバージョンが上がると
また新しい敵が待っています。

本ブログではトラブルを共有して、
みなさまの助けとなる記事を目指して執筆します。


フォローすると UIデザイナー力の上がるTwitter やってます!
今日から使えるテクニックを発信中。
ぜひフォローしてみてください!
👉フォローはこちら!

最後まで読んでいただきありがとうございました!
すばらしいXcodeライフをお過ごしください。

期間限定 最大95%オフセール
効率UPメガバンドル開催中!最大95%オフ!!!
期間 : 11月1日午後15時59分まで
オススメ記事
検証環境
参考サイト