Ios ld:未找到架构x86_64的框架条带
我有一个iOS组件,它依赖于项目A。我在Xcode的项目A中包含了Stripe SDK,它编译得很好 然而,我正在Xcode中构建另一个项目,它依赖于这个组件ProjectB。我将ProjectA添加到ProjectB的库中。项目A依赖于项目B,但不直接依赖于Stripe SDK 现在,每当我尝试编译项目B时,都会出现以下错误:Ios ld:未找到架构x86_64的框架条带,ios,objective-c,xcode,xcode7,stripe-payments,Ios,Objective C,Xcode,Xcode7,Stripe Payments,我有一个iOS组件,它依赖于项目A。我在Xcode的项目A中包含了Stripe SDK,它编译得很好 然而,我正在Xcode中构建另一个项目,它依赖于这个组件ProjectB。我将ProjectA添加到ProjectB的库中。项目A依赖于项目B,但不直接依赖于Stripe SDK 现在,每当我尝试编译项目B时,都会出现以下错误: ld:未找到架构x86_64的框架条带 这一行(项目A内部)似乎触发了错误: #导入 Xcode很容易找到Stripe.h。我还尝试将Stripe SDK直接添加到项目
ld:未找到架构x86_64的框架条带
这一行(项目A内部)似乎触发了错误:
#导入
Xcode很容易找到Stripe.h。我还尝试将Stripe SDK直接添加到项目B中。对于所有目标(Stripe.framework
已列出),我已经仔细检查了构建阶段->使用库链接二进制文件部分
我手动添加了Stripe框架,因此我也尝试使用Cocoapods来添加它,但这也不起作用
请帮忙
下面是项目B(“示例”)的项目结构,下面是项目A(“RCTFBLogin”)
以下是全部错误:
我使用的是Xcode 7.2和Stripe SDK的最新版本(6.0.0)。同样的Stripe框架代码在另一个项目中也可以正常工作
谢谢
更新:我在构建设置->项目B目标的“搜索路径”下的“框架搜索路径”中添加了“$(SRCROOT)/../../../../code>”(因为项目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
我必须做两件事才能让它工作:
将“$(SRCROOT)/../…”(因为项目B位于项目A的两个文件夹深处)添加到项目B目标的“生成设置->搜索路径”下的“框架搜索路径”中
将StripeSDK也添加到Project B的框架中。这第二步特别让我吃惊,因为项目B并不直接依赖于Stripe
在运行测试目标时,我在另一个框架中看到了同样的问题。我必须在buildphases>linkbinary-With-Libraries
部分下将框架添加到我的测试目标(而不仅仅是我的普通目标)
迦太基有关于我看到的问题的更多信息:您在运行测试用例时遇到过这个问题吗?
这就是我的播客文件的样子:
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
因此,一个可能的原因是,在您的pod文件中,您没有正确地添加它们,只是要确保将框架添加到必要的目标中。在将一些依赖项从pod切换到carthage时注意到了这个问题。与Honey的回答类似,我在修改podfile时避免了这个错误
事实证明,我要添加的只是测试目标。然后运行'pod install',它会将您的测试目标链接到您的pod生成的框架
target 'Project' do
use_frameworks!
//pods here normally
target 'ProjectTests' do
//nothing in here
end
end
一个小时我在寻找解决办法。我删除了所有派生数据,多次清理了我的项目,并尝试手动链接我的testtarget。为我工作-谢谢!