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、ターゲット構成の「リンクされたフレームワークとライブラリ」のリストに含まれています。

kCGImagePropertyExifBodySerialNumberまたは を使用しようとしているときにのみ発生しますkCGImagePropertyExifLensModel。同じプロジェクトkCGImagePropertyExifFocalLengthで、kCGImagePropertyExifExposureTime問題なく使用できます

何か案は ?

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 (「ベース SDK」) の設定を解除することをお勧めします。SDK が設定されていない場合は、構築しているシステムのフレームワークとヘッダーを使用する必要があります。

この回避策の欠点は、Mountain Lion で導入されたものを使用している場合、Lion でビルドできないことです。

于 2012-12-17T03:47:47.220 に答える