ld:找不到框架Stripe for architecture x86_64

Lan*_*tig 16 xcode objective-c ios stripe-payments xcode7

我有一个依赖Stripe iOS SDK,项目A 的iOS组件.我在Xcode中包含了项目A中的Stripe SDK,它编译得很好.

但是,我正在Xcode中构建另一个项目,它依赖于这个组件,项目B.我将项目A添加到项目B的库中.项目A依赖于项目B,但不直接依赖于Stripe SDK.

现在,每当我尝试编译Project B时,都会收到此错误:

ld: framework not found Stripe for architecture x86_64

这一行(在项目A内)似乎触发了错误:

#import <Stripe/Stripe.h>

Xcode可以轻松找到Stripe.h.我也尝试将Stripe SDK直接添加到Project B中.我已经对所有目标(Stripe.framework列出)进行了两次和三次检查Build Phases - > Link Binary With Libraries部分.

我手动添加了Stripe框架,所以我也尝试用Cocoapods添加它,但这也没有用.

请帮忙!

这是项目B的项目结构("示例"),项目A("RCTFBLogin")位于其下方.

在此输入图像描述

这是完整的错误:

在此输入图像描述

我正在使用Xcode 7.2和最新版本的Stripe SDK(6.0.0).相同的Stripe框架代码在另一个项目中工作正常.

谢谢.

更新:我$(SRCROOT)/../..在项目B目标的构建设置 - >"搜索路径"下添加了" "(因为项目B在项目A内部生活了两个文件夹)到"框架搜索路径",并且它开始成功编译.但是,我现在运行时遇到此错误:

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
Run Code Online (Sandbox Code Playgroud)

Ada*_*hns 13

在运行我的测试目标时,我在另一个框架中看到了同样的问题.我不得不将框架添加到我的测试目标(不仅是我的正常目标)下Build Phases > Link Binary With Libraries.

迦太基有关于我看到的问题的更多信息:https://github.com/carthage/carthage#adding-frameworks-to-unit-tests-or-a-framework


Hon*_*ney 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
Run Code Online (Sandbox Code Playgroud)

那么我把它添加到podfile:

target ‘ProjectTests’ do
    pod ‘Nimble’, ‘~> 4.0.0’
    pod ’Quick’
end
Run Code Online (Sandbox Code Playgroud)

我还需要做的是:

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
Run Code Online (Sandbox Code Playgroud)

因此,可能的原因是在podfile中没有正确添加它们,只需确保将框架添加到必要的目标中即可.


Lan*_*tig 6

为了实现这个目的,我必须做两件事:

  1. 将"$(SRCROOT)/../ .."(因为项目B在项目A内部生成两个文件夹)添加到"项目B"目标的"构建设置" - >"搜索路径"下的"框架搜索路径".

  2. 将Stripe SDK添加到Project B的框架中.第二步特别让我感到惊讶,因为Project B并不直接依赖Stripe.