我刚刚开始试用Stripe的新版SDK进行Apple付费整合,并在第一步中遇到错误。我正在使用Xcode 6 GM版本。 我按照these说明进行操作。
我通过从GitHub克隆并将文件夹复制到我的项目中来包含Stripe库。
我甚至没有开始编码任何东西,我在构建过程中一直遇到MACH-O链接器错误。
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_STPTestPaymentAuthorizationViewController", referenced from:
objc-class-ref in Stripe.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我尝试删除“Derived Data”文件夹并清除此链接中指定的Build文件夹:XCode/PhoneGap - Apple Mach-O Linker Error。没用 我已经尝试在Objective-C和Swift语言项目中包含该库。
任何人都面临这个问题,或者可以提供任何解决方法的提示?其他Swift项目编译正常,这是一个很麻烦的。
好的,我尝试了lipo命令,这是输出:
yoda:~ manju$ lipo -info libstripe.a
fatal error: /Users/manju/Documents/xcode 6/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't open input file: libstripe.a (No such file or directory)
答案 0 :(得分:1)
它不编译的原因是:
#if __IPHONE_OS_VERSION_MAX_ALLOWED> = 80000
#ENDIF
在STEPTestPaymentAuthorizationViewController和PKPayment + STPTestKeys .h和.m文件中
这必须意味着__IPHONE_OS_VERSION_MAX_ALLOWED是< 80000.本周我有iOS 8和最新版本的XCode。你知道如何设置max允许的早期iOS版本吗?
答案 1 :(得分:0)
我遇到了同样的问题,正如上面的Joshua Said所说,
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
#endif
导致问题。
但是,从源代码中删除它意味着我必须从我导入Stripe的每个项目中的每个文件中删除检查,这看起来有点过分。
在StripeExample-Prefix.pch文件(在支持文件下)中查看Stripe的示例代码后,我得到了要编译的项目,该文件具有以下内容:
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
将#import <Availability.h>
添加到我的.pch并设置&#34;预编译前缀标题&#34;对于我的构建设置,我的项目编译没有任何问题。