2012-12-16 7 views
0

Essayer de préparer des métadonnées (par exemple, kCGImagePropertyExifBodySerialNumber ou kCGImagePropertyExifLensModel) à partir d'images à l'aide du framework ImageIO.ImageIO erreur de liaison?

Malheureusement pendant l'éditeur de liens de compilation a une difficulté:

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 est de corurse importés et ImageIO.framework est inclus sur la liste des « Cadres liés et bibliothèques » dans la configuration cible. Il se produit uniquement lorsque j'essaie d'utiliser kCGImagePropertyExifBodySerialNumber ou kCGImagePropertyExifLensModel. Il le même projet kCGImagePropertyExifFocalLength, kCGImagePropertyExifExposureTime sont utilisés sans aucun problème

Des idées?

Répondre

0

Ces constantes ne semblent pas être définies dans les versions SDK de l'infrastructure ImageIO. Vous pouvez vérifier vous-même avec la commande suivante: (. Modifiez le chemin de Xcode, selon le cas)

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 

Je suis sur une machine Lion au moment, et la version du système du même cadre ne l'avoir:

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

alors, je suggère filing a bug puis, comme solution de contournement, désenclencher SDKROOT (« SDK base ») dans les paramètres de construction de votre projet. Sans kit SDK, il doit utiliser les cadres et les en-têtes du système sur lequel vous travaillez. L'inconvénient de cette solution est que si vous utilisez quelque chose introduit sur Mountain Lion, vous ne pourrez pas construire sur Lion.

+0

Le symbole n'est pas disponible ni 10.7 SDK ni 10.8 SDK, mais dans les bibliothèques système (je cours 10.8.2) peut être trouvé. – maseth