LoginSignup
0
0

More than 5 years have passed since last update.

ObjectiveCプロジェクトからSwiftの自作frameworkを呼び出そうとするとエラーになる。

Last updated at Posted at 2017-01-17

Library not loaded: @rpath

2017-01-17

OCプロジェクトからSwiftのframeworkを呼び出そうとするとエラーになる。

dyld: Library not loaded: @rpath/LampFrame.framework/LampFrame
  Referenced from: /Users/lamplight02/Library/Developer/CoreSimulator/Devices/595F3047-43B1-4C37-B346-7F836665BE39/data/Containers/Bundle/Application/14CE5C50-9ED6-4216-B9AE-14792BF89595/LampFrameProject-Objective-C.app/LampFrameProject-Objective-C
  Reason: image not found
(lldb) 

試したこと

・Linked Frameworks and Libraries に該当のライブラリが設定されているか確認
・Build Phases > Copy Files に該当のライブラリが設定されているか
・Build Settings > Linking > Runpath Search Paths に @loader_path/../Frameworks/ と記述

考えられる原因

このエラーは、Swift製フレームワークからSwiftの標準ライブラリをdyld(3)しようとしたものの、そういうファイルは無いからロードできなかったために発生しています。Swiftの標準ライブラリはアプリにバンドルされたものを使うので(将来は変わるかも)、アプリの設定によって、きちんとバンドルしてあげないといけないのです。

解決策を試す

この場合、ターゲットのBuild Settingsにある[Build Options]-[Embeedded Content Contains Swift Code]が、きちんとYesになっているかどうかをチェックします。そして、もしNoになっていたらYesに変更することで、解決するはずです。

Embeedded Content Contains Swift Codeがない

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESならあったのでそれをYESにしたけど動かない

xcode build settingsの項目を追加できないか

どうやら、追加できるかもしれない

Build Settings にステージング環境を追加

Build Settings にステージング環境を追加

Project Navigator の最上部にあるプロジェクトファイルを選択
「PROJECT」ファイルのアイコンを選択し、「Info」のタブを選択
「Configuration」内の + ボタンを押下し任意の名前で追加。この例では「Staging」として追加

動かない

スクリーンショット 2017-01-17 11.43.41.png

詰まった

よく調べるに、遅くパスの問題ではないだろうか。多分、Objectib-Cのプロジェクトでは、OS組み込みのフレームワーク(/System/Library/Frameworks)以外のところにあるフレームワークは検索パスを設定しないといけないらしい。/System/Library/FrameworksにLampframeをドラッグしようとしたら出来なかった

Framework Search Pathsを指定

/Library/Framewerks
だめ

Libraryをプロジェクトネームにしてみる

/ObjectibCFrame.app/Frameworks $(PROJECT_DIR)
だめ

Run Search Paths を設定

$(inherited) @executable_path/Products
だめ

LIBRARY SEARCH PATHSを設定する

$SRCROOT
//絶対パス→相対パスに変更
だめ
$(SRCROOT)/Classes/
だめ

Deployment Targetを合わせる

hogehoge.frameworkのBuild SettingsのOS X Deployment Targetを現在のMacのOSバージョンに合わせれば治るらしい
http://blog.dalt.me/137

だめ


次やること

~/.bash_profile にコードを書けばいけるらしい

0
0
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
0
0