2012-12-16 4 views
0

ImageIO 프레임 워크를 사용하여 이미지에서 준비된 메타 데이터 (예 : kCGImagePropertyExifBodySerialNumber 또는 kCGImagePropertyExifLensModel)를 사용하려고합니다. 불행하게도 컴파일 링커 동안ImageIO 링커 오류?

는 문제가 있습니다

Undefined symbols for architecture x86_64: 
"_kCGImagePropertyExifBodySerialNumber", referenced from: 
     -[AppDelegate applicationDidFinishLaunching:] in AppDelegate.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

ImageIO/CGImageProperties.h 수입 corurse입니다, 그리고 ImageIO.framework는 목표 설정의 목록 "링크 프레임 워크 및 라이브러리"에 포함되어 있습니다.

나는 kCGImagePropertyExifBodySerialNumber 또는 kCGImagePropertyExifLensModel을 사용할 때만 문제가 발생합니다. 그것은 같은 프로젝트 kCGImagePropertyExifFocalLength, kCGImagePropertyExifExposureTime 아무 문제없이 사용됩니다

어떤 아이디어?

답변

0

이러한 상수는 ImageIO 프레임 워크의 SDK 버전에서 정의되지 않은 것처럼 보입니다. 다음 명령으로이 직접 확인할 수 있습니다. (적절한 엑스 코드의 경로를 편집)

nm /Volumes/Applications/Developer\ Tools/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/ImageIO.framework/imageio | grep -F kCGImagePropertyExifBodySerialNumber 

나는 순간에 사자 기계에있어

, 같은 프레임 워크의 시스템 버전을 그것을 가지고 않습니다

% nm /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ImageIO.framework/imageio | grep -F kCGImagePropertyExifBodySerialNumber 
00000000000e4898 s _kCGImagePropertyExifBodySerialNumber 

그래서, 나는 다음 filing a bug을 제안했으며, 대안으로, 프로젝트의 빌드 설정에 반환하기 SDKROOT ("자료 SDK") 등. SDK를 설정하지 않으면 구축하려는 시스템의 프레임 워크와 헤더를 사용해야합니다.

해결 방법의 단점은 Mountain Lion에 소개 된 것을 사용하고 있다면 Lion을 기반으로 구축 할 수 없다는 것입니다.

+0

기호를 사용할 수 없습니다. 10.7 SDK 또는 10.8 SDK는 아니지만 시스템 라이브러리 (10.8.2를 실행 중입니다)에서 찾을 수 있습니다. – maseth