在模拟器中缺少来自LayarSDK的符号

时间:2014-01-15 12:29:53

标签: ios linker layar

我将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,它只包含armv7armv7s

1 个答案:

答案 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。

条件编译意味着它不存在于设备体系结构中,因此没有链接器错误。