架构 armv7 的未定义符号,ld:架构 armv7 找不到符号 - 怎么办?

7
我在Stack Overflow上读了很多帖子,但是没有一个提出的解决方案适用于我。希望能有一位更了解错误解释的人能够帮助我。
我的应用一直运行良好(现在也一样),但是当使用“iCarousel”这个类时,就会出现问题,它是Cover Flow的实现。
有趣的是:当打开iCarousel的示例项目时,它在我的iPhone上运行良好。我的应用程序(在一个单独的项目中)也运行良好。它们都使用armv6 armv7架构并在iOS 5.1上运行。
然后我将这个类复制到自己的项目中,并添加所有必要的框架。此时还没有出现错误。但是当我构建和运行时,就会出现一个错误。
Ld /Users/Sooper/Library/Developer/Xcode/DerivedData/TestApp-
ejfsezvwxyxhqpanwwrcmsbkslxi/Build/Intermediates/TestApp.build/Debug-
iphoneos/TestApp.build/Objects-normal/armv7/TestApp normal armv7

    cd "/Users/Sooper/Developer/TestApp v1.0"
    setenv IPHONEOS_DEPLOYMENT_TARGET 5.0
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:
    /Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot 

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
 -L/Users/Sooper/Library/Developer/Xcode/DerivedData/TestApp-ejfsezvwxyxhqpanwwrcmsbkslxi/Build/Products/
Debug-iphoneos -F/Users/Sooper/Library/Developer/Xcode/DerivedData/TestApp-ejfsezvwxyxhqpanwwrcmsbkslxi/Build/Products/
Debug-iphoneos -filelist /Users/Sooper/Library/Developer/Xcode/DerivedData/TestApp-ejfsezvwxyxhqpanwwrcmsbkslxi/Build/Intermediates/TestApp.build/
Debug-iphoneos/TestApp.build/Objects-normal/armv7/TestApp.LinkFileList -dead_strip -miphoneos-
version-min=5.0 -lz -framework QuartzCore -framework CoreGraphics -framework 
SystemConfiguration -lxml2.2.7.3 -framework Security -framework CoreMedia -framework Accounts 
-framework CoreFoundation -framework AudioToolbox -framework AVFoundation -framework Twitter -
framework MediaPlayer -framework UIKit -framework Foundation -o 
/Users/Sooper/Library/Developer/Xcode/DerivedData/TestApp-
ejfsezvwxyxhqpanwwrcmsbkslxi/Build/Intermediates/TestApp.build/Debug-
iphoneos/TestApp.build/Objects-normal/armv7/TestApp

在此之下:
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_ArtworkScrollerViewController", referenced from:
      objc-class-ref in TestAppViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我移除类的实例,错误就消失了,应用程序就可以运行。我很困惑。为什么它在单独的项目中能够工作,但在另一个项目中却不能?非常感谢您的指导。

这个答案帮助了我解决相同的问题,你也可以试试! - Pepe Ramirez
1个回答

20

请确保将ArtworkScrollerViewController.m添加到您正在构建的目标中


谢谢您的回复。我该如何将ArtworkScrollerViewController.m添加到目标中?是在类的信息查看器中勾选“目标成员资格”吗?我已经这样做了,但仍然出现相同的错误。 - sooper
清理后再次运行,似乎解决了这个问题。谢谢。 - sooper
4
要将其添加到目标中,请在选择 ArtworkScrollerViewController.m 后在 XCode 中打开右侧菜单(实用工具)。在文件检查器中有一个名为“目标成员资格”的下拉菜单。如果您选择它,它将把 .m 添加到目标中。 - RileyE
3
没问题,我看到了,如果有人后来发现它,我觉得我可以添加一些内容。我发现清洁效果参差不齐。 - RileyE
1
@RileyE:你做得很好,因为几个月后,我偶然发现了这个问题,直到我读了你的评论才知道该怎么做。非常感谢! - Saturn
@Omega 太棒了!我很高兴它能帮到你。不客气。 - RileyE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接