为什么我的XCode 3.2.3 iPhone 4.0.1项目无法链接AVFoundation?

28

我正在遵循此处的参考文献(http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html)来从iPhone相机中获取视频。除了该页面上的代码外,这是一个全新的项目。我还将AVFoundation框架添加到了项目中。以下是我收到的链接错误:

Build my project of project my project with configuration Debug

CompileC "build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv6/MainViewController.o" /Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m normal armv6 objective-c com.apple.compilers.gcc.4_2
cd /Users/mwilliamson/Projects/my_project/iphone
setenv LANG en_US.US-ASCII
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -x objective-c -arch armv6 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -fvisibility=hidden -gdwarf-2 -mthumb -miphoneos-version-min=4.0 -iquote "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-generated-files.hmap" "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-own-target-headers.hmap" "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-all-target-headers.hmap" -iquote "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-project-headers.hmap" -F/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos -I/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos/include -I/Users/mwilliamson/Projects/my_project/iphone/opencv_device/include "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/DerivedSources/armv6" "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/DerivedSources" -include /var/folders/kW/kW6u6B7SGyGYu+nNumtIa++++TI/-Caches-/com.apple.Xcode.501/SharedPrecompiledHeaders/my_project_Prefix-alujyqxskcuyuogdsynmjyrkxbhh/my_project_Prefix.pch -c /Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m -o "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv6/MainViewController.o"

/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m: In function '-[MainViewController captureOutput:didOutputSampleBuffer:fromConnection:]':
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: 'MainViewController' may not respond to '-imageFromSampleBuffer:'
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: (Messages without a matching method signature
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: will be assumed to return 'id' and accept
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: '...' as arguments.)

Ld "build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv6/my project" normal armv6
cd /Users/mwilliamson/Projects/my_project/iphone
setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -L/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos -F/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos -filelist "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv6/my project.LinkFileList" -dead_strip -lz -lstdc++ /Users/mwilliamson/Projects/my_project/iphone/opencv_device/lib/libcxcore.a /Users/mwilliamson/Projects/my_project/iphone/opencv_device/lib/libcv.a -miphoneos-version-min=4.0 -framework Foundation -framework UIKit -framework CoreGraphics -framework AVFoundation -o "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv6/my project"

Undefined symbols:
  "_CVPixelBufferGetBaseAddress", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferUnlockBaseAddress", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferLockBaseAddress", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CMSampleBufferGetImageBuffer", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferGetHeight", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_kCVPixelBufferPixelFormatTypeKey", referenced from:
      _kCVPixelBufferPixelFormatTypeKey$non_lazy_ptr in MainViewController.o
     (maybe you meant: _kCVPixelBufferPixelFormatTypeKey$non_lazy_ptr)
  "_CVPixelBufferGetWidth", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferGetBytesPerRow", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CMTimeMake", referenced from:
      -[MainViewController setupCaptureSession] in MainViewController.o
  "_CVPixelBufferGetDataSize", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

CompileC "build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv7/MainViewController.o" /Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m normal armv7 objective-c com.apple.compilers.gcc.4_2
cd /Users/mwilliamson/Projects/my_project/iphone
setenv LANG en_US.US-ASCII
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -x objective-c -arch armv7 -fmessage-length=0 -pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -fvisibility=hidden -gdwarf-2 -mthumb -miphoneos-version-min=4.0 -iquote "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-generated-files.hmap" "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-own-target-headers.hmap" "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-all-target-headers.hmap" -iquote "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/my project-project-headers.hmap" -F/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos -I/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos/include -I/Users/mwilliamson/Projects/my_project/iphone/opencv_device/include "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/DerivedSources/armv7" "-I/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/DerivedSources" -include /var/folders/kW/kW6u6B7SGyGYu+nNumtIa++++TI/-Caches-/com.apple.Xcode.501/SharedPrecompiledHeaders/my_project_Prefix-gtrotaxhqdjhgqbqbsnyeqjkaxdt/my_project_Prefix.pch -c /Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m -o "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv7/MainViewController.o"

/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m: In function '-[MainViewController captureOutput:didOutputSampleBuffer:fromConnection:]':
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: 'MainViewController' may not respond to '-imageFromSampleBuffer:'
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: (Messages without a matching method signature
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: will be assumed to return 'id' and accept
/Users/mwilliamson/Projects/my_project/iphone/Classes/MainViewController.m:126: warning: '...' as arguments.)

Ld "build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv7/my project" normal armv7
cd /Users/mwilliamson/Projects/my_project/iphone
setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -L/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos -F/Users/mwilliamson/Projects/my_project/iphone/build/Debug-iphoneos -filelist "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv7/my project.LinkFileList" -dead_strip -lz -lstdc++ /Users/mwilliamson/Projects/my_project/iphone/opencv_device/lib/libcxcore.a /Users/mwilliamson/Projects/my_project/iphone/opencv_device/lib/libcv.a -miphoneos-version-min=4.0 -framework Foundation -framework UIKit -framework CoreGraphics -framework AVFoundation -o "/Users/mwilliamson/Projects/my_project/iphone/build/my project.build/Debug-iphoneos/my project.build/Objects-normal/armv7/my project"

Undefined symbols:
  "_CVPixelBufferGetBaseAddress", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferUnlockBaseAddress", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferLockBaseAddress", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CMSampleBufferGetImageBuffer", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferGetHeight", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_kCVPixelBufferPixelFormatTypeKey", referenced from:
      _kCVPixelBufferPixelFormatTypeKey$non_lazy_ptr in MainViewController.o
     (maybe you meant: _kCVPixelBufferPixelFormatTypeKey$non_lazy_ptr)
  "_CVPixelBufferGetWidth", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CVPixelBufferGetBytesPerRow", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
  "_CMTimeMake", referenced from:
      -[MainViewController setupCaptureSession] in MainViewController.o
  "_CVPixelBufferGetDataSize", referenced from:
      -[MainViewController imageFromSampleBuffer:] in MainViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
2个回答

76

再次回答自己的问题...我需要添加CoreVideo和CoreMedia框架。


2
谢谢Matt。文档很差。它表明只需要使用AVFoundation。对于苹果新手来说,这使情况变得更糟。 - CF_Maintainer
3
为什么 Xcode 在没有包含框架的情况下表现得好像框架可用? - dtbarne

2
我花了几个小时来解决这个问题的变体。我发帖是为了帮助任何可能处于同样困境中的人。我已经将CoreVideo和CoreMedia链接到我的项目中。然而,我仍然遇到了这个问题。在搜索和尝试不同方法后,我找到了这篇文章。以下是我的解决方案:
1)删除有问题的库(在我的情况下是CoreVideo和CoreMedia)。通过在项目导航中将它们删除,并选择“删除引用”,以及从“构建阶段”中删除它们来完成此操作。
2)重新添加框架,清理并重新编译。

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