尝试使用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
已导入corurse,目标配置中的“链接的框架和库”列表中包含ImageIO.framework
。
只有在我尝试使用kCGImagePropertyExifBodySerialNumber
或kCGImagePropertyExifLensModel
时才会发生这种情况。使用相同的项目kCGImagePropertyExifFocalLength
,kCGImagePropertyExifExposureTime
没有任何问题
有什么想法吗?
答案 0 :(得分: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
所以,我建议filing a bug然后,作为解决方法,在项目的构建设置中取消设置SDKROOT(“Base SDK”)。如果没有设置SDK,它应该使用您正在构建的系统的框架和标题。
该解决方法的缺点是,如果您使用Mountain Lion上引入的任何内容,您将无法在Lion上构建。