2016-01-14 14 views
15

私は、Stripe iOS SDKプロジェクトAに依存するiOSコンポーネントを持っています。私はXcodeのプロジェクトAにStripe SDKを含めました。ld:フレームワークが見つかりませんアーキテクチャのストライプx86_64

しかし、私はこのコンポーネントに依存する別のプロジェクトをXcodeにビルドしています。私はプロジェクトBのライブラリにプロジェクトAを追加しました。プロジェクトAはプロジェクトBに依存していますが、Stripe SDKには直接依存していません。

は今、私はプロジェクトBをコンパイルしようとするたびに、私はこのエラーを取得:

ld: framework not found Stripe for architecture x86_64

このライン(プロジェクトAの内部には)エラーをトリガするようだ:

#import <Stripe/Stripe.h>

XcodeはStripe.hを見つけるのに問題はありません。私はStripe SDKをプロジェクトBに直接追加しようとしました。ビルドフェーズ - >ライブラリとバイナリをリンクするセクションで、すべてのターゲット(Stripe.frameworkが表示されています)を二重と三重にチェックしました。

私はStripeフレームワークを手作業で追加しました。代わりにCocoapodsを追加してみましたが、これもうまくいきませんでした。

助けてください!

プロジェクトB( "example")のプロジェクト構造は、プロジェクトA( "RCTFBLogin")の下にあります。

enter image description here

私はXcodeの7.2とストライプSDKの最新バージョン(6.0.0)を使用しています:

enter image description here

はここで完全なエラーです。同じStripeフレームワークコードは別のプロジェクトでうまく動作します。

ありがとうございました。

更新:Project Bターゲットのビルド設定 - > "検索パス"の下の "フレームワーク検索パス"に "プロジェクトBがプロジェクトAの2つのフォルダを深く抱えているので" $(SRCROOT)/../..を追加しました。しかし、私は今実行しているときにこのエラーが出る:

ld: warning: Auto-Linking supplied '/Users/rettig/wip/react-native-facebook-login.2/Stripe.framework/Stripe', framework linker option at /Users/rettig/wip/react-native-facebook-login.2/Stripe.framework/Stripe is not a dylib 
Undefined symbols for architecture x86_64: 
    "_OBJC_CLASS_$_Stripe", referenced from: 
     objc-class-ref in libRCTFBLogin.a(RCTFBLogin.o) 
ld: symbol(s) not found for architecture x86_64 

答えて

6

私はこの作業を取得するために2つのことを行う必要がありました:

  1. は、 "$(SRCROOTを)/../ .." 追加(以降プロジェクトBは、プロジェクトBターゲットのビルド設定 - > "検索パス"の下で、プロジェクトAの内部の2つのフォルダを「フレームワーク検索パス」にしています。

  2. ストライプSDKをプロジェクトBのフレームワークにも追加します。プロジェクトBはストライプに直接依存していないので、この第2ステップは特に驚きました。

12

テストターゲットを実行しているときに別のフレームワークで同じ問題が発生しました。フレームワークを(私の通常のターゲットだけでなく)Build Phases > Link Binary With Librariesセクションに追加する必要がありました。

カルタゴは、私が見た問題の詳細情報を持っていますhttps://github.com/carthage/carthage#adding-frameworks-to-unit-tests-or-a-framework

+0

これはまさに私が必要としていたものです。 – dustinrwh

10

だから、これは私のpodfileがどのように見えるかです:

def shared_pods 
    pod ‘GoogleMaps', '~> 1.13.0' 
    pod ‘SwiftyJSON', '~> 2.3.2' 
    pod ‘Alamofire', '~> 3.2.1' 
    pod ‘MGSwipeTableCell’ 
end 

target 'projectName' do 
    shared_pods 
end 

それでは、私はpodfileにこれを追加しました:

target ‘ProjectTests’ do 
    pod ‘Nimble’, ‘~> 4.0.0’ 
    pod ’Quick’ 
end 

私もする必要があったのは:

target ‘ProjectTests’ do 
    shared_pods // I needed to add this line as well. Since this line included the needed 'MGSwipeTableCell' framework 
    pod ‘Nimble’, ‘~> 4.0.0’ 
    pod ’Quick’ 
end 

あなたのポッドファイルに正しく追加しなかった可能性がある理由は、フレームワークがフレームワークに追加されていることを確認することだけです。

+1

男1時間私は解決策を探しています。私はすべての派生データを削除し、プロジェクトを複数回クリーニングし、テストターゲットを手動でリンクしようとしました。私のために働く - ありがとう! – kuzdu

2

一部の依存関係をポッドからカートージュに切り替える際に、この問題が発生しました。 Honeyの答えと同様に、私はpodfileを変更するこのエラーを回避することができました。

私が追加しなければならなかったのは、テストターゲットでした。次に 'pod install'を実行すると、テストターゲットがポッドによって生成されたフレームワークにリンクされます。

target 'Project' do 
    use_frameworks! 

    //pods here normally 

    target 'ProjectTests' do 
    //nothing in here 
    end 
end 
関連する問題