2013-02-06 51 views
3

我正在使用xcode 4.6。 SDK是iOS 6.1。我得到的错误是“架构armv7的未定义符号”而项目链接我自己创建的静态库,名为“libEncrypt.a”。构建iPhone设备时xcode静态库链接错误

我确定我已经使用架构armv7创建了libEncrpt.a。使用“otool -a”来验证静态库,它显示下面的消息。不明白为什么xcode sill会像“架构armv7的未定义符号”

> otool -a libEncrypt.a 
Archive : libEncrypt.a (architecture armv7) 
0100644 505/20 108 1360127518 #1/20 
0100644 505/20 3604 1360127513 #1/20 
Archive : libEncrypt.a (architecture armv7s) 
0100644 505/20 108 1360127518 #1/20 
0100644 505/20 3604 1360127513 #1/20 

添加详细错误消息的打击:

Undefined symbols for architecture armv7: 
    "_OBJC_CLASS_$_libEncrypt", referenced from: 
     objc-class-ref in LoginViewController.o 
     objc-class-ref in SignupViewController.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

可以显示整个错误消息吗?你是否链接到任何其他库? – monoxygen

+0

详细错误信息:未找到符号(S):为架构的ARMv7未定义符号: “_OBJC_CLASS _ $ _ libEncrypt”,从引用:在LoginViewController.o objc级-REF objc级-REF IN SignupViewController.o LD对于架构armv7 clang:错误:链接器命令失败,退出代码1(使用-v查看调用) – jacksun

+0

我不认为我链接到其他库。 lib“libEncrypt.a”显示在“项目>构建阶段>与库的链接二进制文件”中。 – jacksun

回答

2

仔细检查您的“构建有源体系只有”在您的应用程序设置和静态库项目。

我有这个完全相同的问题,因为我的“Build Active Architecture Only”设置为YES,而不是我的iOS应用程序。当iOS应用程序尝试执行调试构建时,它期望所有架构都存在,但是仅为静态库构建armv7s,因为我正在部署到我的iPhone 5.