我将Layar SDK框架包含在我的应用程序(8.0版)中,一切都在设备上运行良好。
然而,我不能再在模拟器上运行应用了 - 我不介意Layar不工作(毕竟没有相机!)但我确实需要它来编译以进行持续集成,自动化测试等(不是提到在火车上/下班开发!)
链接器给了我这些错误:
ld: warning: ignoring file /Users/username/Documents/appname/libs/MPOAuth/libMPOAuthMobile.a, missing required architecture i386 in file /Users/username/Documents/appname/libs/MPOAuth/libMPOAuthMobile.a (2 slices)
ld: warning: ignoring file local/LayarSDK/LayarSDK.framework/LayarSDK, missing required architecture i386 in file local/LayarSDK/LayarSDK.framework/LayarSDK (2 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_LayarSDK", referenced from:
objc-class-ref in MYAppDelegate.o
ld: symbol(s) not found for architecture i386
检查时,LayarSDK不包含i386
,它只包含armv7
和armv7s
。
答案 0 :(得分:1)
我的解决方案非常笨拙 - 如果有人有更好的想法,请告诉我!
我将此文件(LayarSimulatorStub.m
)编译到我的应用中:
#if TARGET_IPHONE_SIMULATOR
#import <Foundation/Foundation.h>
@interface LayarSDK : NSObject
@end
@implementation LayarSDK
+ (id)layarSDKWithConsumerKey:(id)a andConsumerSecret:(id)b andDelegate:(id)c { return nil; }
- (id)init { return nil; }
- (id)initWithConsumerKey:(id)a andConsumerSecret:(id)b andDelegate:(id)c { return nil; }
@end
#endif
现在, 一个i386
符号LayarSDK
。它只是从它的所有构造函数返回nil
。该应用程序现在编译已禁用Layar。
条件编译意味着它不存在于设备体系结构中,因此没有链接器错误。