0

尝试使用 ImageIO 框架从图像中准备元数据(例如kCGImagePropertyExifBodySerialNumber或 )。kCGImagePropertyExifLensModel

不幸的是在编译期间链接器有一个麻烦:

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当然是导入的,并且ImageIO.framework包含在目标配置中的“链接框架和库”列表中。

仅当我尝试使用kCGImagePropertyExifBodySerialNumberor 时才会发生这种情况kCGImagePropertyExifLensModel。同一个项目kCGImagePropertyExifFocalLengthkCGImagePropertyExifExposureTime使用没有任何问题

有任何想法吗 ?

4

1 回答 1

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 

(根据需要编辑 Xcode 的路径。)

我现在在一台 Lion 机器上,同一个框架的系统版本确实有它:

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

因此,我建议提交一个错误,然后作为一种解决方法,在项目的构建设置中取消设置 SDKROOT(“Base SDK”)。如果没有设置 SDK,它应该使用您正在构建的系统的框架和标头。

该解决方法的缺点是,如果您使用在 Mountain Lion 上引入的任何东西,您将无法在 Lion 上构建。

于 2012-12-17T03:47:47.220 回答