2012-05-17 6 views
0

나는이 iOS 라이브러리 PTImageAlbumViewController을 현재 작업중인 기존 프로젝트에 추가하려고하는데 컴파일 오류가 발생합니다. 샘플 프로젝트가 포함되어 있으며 다른 libs에 종속되어 있습니다. 샘플 프로젝트는 잘 작동하지만 오류없이 내 프로젝트로 마이그레이션 할 수는 없습니다. 프로젝트에서 프로젝트로 프로젝트를 드래그하여 파일을 직접 가져 오려고했지만 여전히 작동하지 않습니다.Mach-O Linker 오류를 수정하는 방법

내가 빠진 것이 있나요?

Undefined symbols for architecture armv7: "_OBJC_METACLASS_$_NetworkPhotoAlbumViewController", referenced from: _OBJC_METACLASS_$_PTImageAlbumViewController in PTImageAlbumViewController.o "_OBJC_CLASS_$_NIPhotoAlbumScrollView", referenced from: _OBJC_CLASS_$_PTImageAlbumView in PTImageAlbumView.o "_OBJC_CLASS_$_NetworkPhotoAlbumViewController", referenced from: _OBJC_CLASS_$_PTImageAlbumViewController in PTImageAlbumViewController.o "_NIPathForBundleResource", referenced from: -[PTImageAlbumViewController viewDidLoad] in PTImageAlbumViewController.o "_OBJC_METACLASS_$_NIPhotoAlbumScrollView", referenced from: _OBJC_METACLASS_$_PTImageAlbumView in PTImageAlbumView.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

+1

이것은 프로젝트의 프레임 워크가 누락되어있을 수 있습니다. –

+0

teofilo가 맞고 대상에 추가하려고 할 수 있습니다. 또한 헤더 검색 경로를 변경해야 할 수도 있습니다. –

+0

.h 및 .m 파일이 있습니다. 이미 프로젝트. 어떻게 누락 된 프레임 워크를 결정할 수 있습니까 ?? – ChickensDontClap

답변

1

nimbus 파일은 찾을 수 없습니다.

프로젝트에 nimbus 및 SDURLCache 파일을 추가 한 경우 해당 파일이 응용 프로그램의 대상에 포함되어 있는지 확인해야합니다.

모든 파일이 프로젝트에 들어가고 올바른 대상에 있는지 확인하십시오. 예를 들어, 첫 번째 오류는 NetworkPhotoAlbumViewController.m에 관한 것입니다. 이 파일은 프로젝트와 올바른 대상에 있습니까?

만약 그렇다면 다른 이유로는이 아키텍처를 위해 어떤 이유로 든 건물을 짓지 않고 있다는 것입니다. DerivedData 디렉토리의 트리를 오브젝트 파일이 저장된 위치로 이동하고 nm을 사용하여 오브젝트 파일에서 누락 된 심볼을 검색함으로써 찾을 수 있습니다. 내 컴퓨터에

예 :

cd /Users/username/Library/Developer/Xcode/DerivedData/AlbumDemo-eyqszubjyqhczreurkblqktoxjja/Build/Intermediates/AlbumDemo.build/Debug-iphonesimulator/AlbumDemo.build/Objects-normal/i386 

nm NetworkPhotoAlbumViewController.o | grep _NetworkPhotoAlbumViewController 
00000000 t -[NetworkPhotoAlbumViewController shutdown_NetworkPhotoAlbumViewController] 
0000e0fc s -[NetworkPhotoAlbumViewController shutdown_NetworkPhotoAlbumViewController].eh 
0000cde8 S _OBJC_CLASS_$_NetworkPhotoAlbumViewController 
0000c9b4 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._activeRequests 
0000c9bc S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._highQualityImageCache 
0000c9b0 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._queue 
0000c9b8 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._thumbnailImageCache 
0000cdfc S _OBJC_METACLASS_$_NetworkPhotoAlbumViewController 
0000cfe0 s l_OBJC_$_INSTANCE_METHODS_NetworkPhotoAlbumViewController 
0000d084 s l_OBJC_$_INSTANCE_VARIABLES_NetworkPhotoAlbumViewController 
0000d0e0 s l_OBJC_$_PROP_LIST_NetworkPhotoAlbumViewController 
0000d100 s l_OBJC_CLASS_RO_$_NetworkPhotoAlbumViewController 
0000cfb8 s l_OBJC_METACLASS_RO_$_NetworkPhotoAlbumViewController 

이 기호는 두 번째 열에서 "U"를 필요가 없다는 사실은이 오브젝트 파일에 정의되어 있음을 의미한다. the nm man page에서 모든 nm 출력의 의미를 찾을 수 있습니다. 새 클래스 파일을 만들 때

+1

추가 정보 및 리소스를 제공해 주셔서 감사합니다. 프로젝트에 파일을 추가했음을 알았지 만 컴파일 된 소스의 일부가 아닙니다. '대상에 추가'버튼을 선택했기 때문에 자동으로 추가되지 않은 이유를 잘 모릅니다. – ChickensDontClap

0

때때로 엑스 코드는> 컴파일 소스

를 페이즈> 빌드 "컴파일 소스"

선택 프로젝트 아이콘> 대상에 추가하고 추가 + 버튼을 클릭하지 않습니다 Class * .m 파일.

관련 문제