iOS在链接为真实设备而非模拟器设计的库时获取错误

时间:2016-07-24 01:06:34

标签: ios ios-simulator

我在模拟器上运行我的项目(使用配置文件,因为我要检查是否存在泄漏)。然后我收到了以下警告和错误:

ld: warning: ignoring file /Users/Caesar/Documents/developer/objective-c/BoBanTang/BoBanTang/ShareSDK/Support/PlatformSDK/QQSDK/TencentOpenAPI.framework/TencentOpenAPI, missing required architecture i386 in file /Users/Caesar/Documents/developer/objective-c/BoBanTang/BoBanTang/ShareSDK/Support/PlatformSDK/QQSDK/TencentOpenAPI.framework/TencentOpenAPI (3 slices)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_QQApiInterface", referenced from:
      objc-class-ref in BBTAppDelegate.o
  "_OBJC_CLASS_$_TencentOAuth", referenced from:
      objc-class-ref in BBTAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

但是,如果我只是运行它,而不使用配置文件,它可以成功构建。我已经搜索了stackOverFlow,我知道这是因为这个库是为真实设备设计的。但是为什么我使用2种方法来运行我的项目得到不同的结果?我已经使用了这个库一段时间了,之前我还没有遇到过这个问题(也使用了个人资料)。谁能告诉我为什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设您正在自己构建TencentOpenAPI.framework并使用工作区,这是SO和其他论坛上讨论的已知问题。问题在于,个别项目不知道框架在由另一个项目生成时是什么平台。他们只是看到磁盘上的文件并尝试使用它。在构建用于分析时,为新选择的平台重建了框架。

清洁和重建也可能会给你相同的结果。