在iOS项目中包含静态库时出错

时间:2011-11-02 07:57:06

标签: ios xcode static-libraries xcode4.2

我正在尝试在iOS项目中包含静态库。 我导入.a文件和每个.h相关,但后来我收到此错误:

ld: warning: ignoring file /Users/alexis/Library/Developer/Xcode/DerivedData/PlazappPartnerWorkspace-            cdrmloavlcqouugawmtqywiinqne/Build/Products/Debug-iphoneos/libPlazappPartnerLib.a, file was built for archive which is not the architecture being linked (i386)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_LauncherViewController", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想有一个架构类型的问题,但我不明白为什么以及如何解决它。 有人可以向我解释并告诉我如何解决它吗?谢谢!

1 个答案:

答案 0 :(得分:1)

看起来您的库是为了在设备(arm架构)中运行而构建的,并且您尝试在模拟器(i386架构)中使用它。检查您的库构建设置。它们应与您的项目构建设置相匹配。

甚至更好,为开发目的创建胖库lipo命令是你的朋友。

验证库中存在的当前体系结构:(在终端中)


    cd <path to library folder> # in you case: /Users/alexis/Library/Developer/Xcode/DerivedData/PlazappPartnerWorkspace-            cdrmloavlcqouugawmtqywiinqne/Build/Products/Debug-iphoneos
    lipo -info libPlazappPartnerLib.a

输出应如下所示:

Architectures in the fat file: libPlazappPartnerLib.a are: armv6 armv7

它们应与您正在构建的目标设备或模拟器匹配。