Tech Racho エンジニアの「?」を「!」に。
  • 開発

Undefined symbols: "_objc_msgSendSuper2" に遭遇したら

iOSアプリ開発中、静的ライブラリのリンク・アンリンクを繰り返していたところ、

Undefined symbols:
"_objc_msgSendSuper2" , referenced from:...

というエラーで、アプリをビルドできなくなる現象に遭遇しました。
このエラーは、libobjc.dylibが見つからず、Objective-Cの内部関数が見つからないことで起きているということまではすぐわかったのですが、
なぜlibobjc.dylibが急に見つからなくなったのか気づくまで少し時間がかかりました。

どうやら、静的ライブラリのリンク・アンリンクを繰り返していると、
希に、Library Search Pathsから、SDK標準のフレームワークフォルダ
「$(SDKROOT)/Developer/Library/Frameworks」
が除外されてしまうことがあるようです。(Xcode 4.0.2のバグ?)

Target設定のBuild Settings設定のLibrary Search Pathsに、
「$(SDKROOT)/Developer/Library/Frameworks」
を再度追加してやることで、エラーは出なくなりました。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。