Mac OS X 用の Swift アプリケーションで外部フレームワークを使用しようとしています。外部フレームワークも Swift を使用するため、Swift 共有ライブラリ (たとえば、libswiftCore.dylib
) に依存します。これは、コマンドによって確認されます
$ otool -L PromiseKit.framework/PromiseKit
PromiseKit.framework/PromiseKit:
...
@rpath/libswiftCore.dylib (compatibility version 0.0.0, current version 0.0.0)
見上げれ@rpath
ば分かる
$ otool -l PromiseKit.framework/PromiseKit
...
cmd LC_RPATH
cmdsize 40
path @executable_path/Frameworks (offset 12)
したがって、実行時に@rpath
解決することを期待しています@executable_path/Frameworks
問題
実行時エラーが発生する
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: .../PromiseKit.framework/Versions/A/PromiseKit
Reason: image not found
ビルドした実行可能ファイルを含むフォルダーを調べても、Frameworks
フォルダーが表示されません。
修正に失敗しました
アプリに設定しようとEMBEDDED_CONTENT_CONTAINS_SWIFT
しYES
ましたが、それでもフォルダーが作成されません。Frameworks
フォルダーを手動で作成Frameworks
し、Swift 共有ライブラリにコピーしようとしました ( /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx
.
objc[64445]: Class _TtC10Foundation15NSSimpleCString is implemented in both
.../Frameworks/libswiftFoundation.dylib and
.../myApp.
One of the two will be used. Which one is undefined.
質問
Swift ライブラリがアプリケーションに静的にリンクされている可能性はありますか? その場合、それをオフにして、Frameworks
代わりに XCode にフォルダー バージョンを作成させるにはどうすればよいですか?
コマンドラインアプリであることは重要なポイントだと思います。通常のアプリを作成してフレームワークを追加しようとしましたが
Frameworks
、パッケージ内に予想されるフォルダーを取得し.app
、Swift 共有ライブラリが含まれています