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

UIImagePickerControllerをアプリに追加していますが、コンパイルしようとすると上記のエラーが発生します。私はSOで解決策を見つけました:

シンボルが見つかりません:kUTTypeImage

シンボル(kUTTypeImage)を検索し、シンボルが存在するはずのイメージ/ライブラリ(この場合はMobileCoreServices.framework)を見つけます。次に、バイナリをそのフレームワークにリンクします。

問題は、それをどのように実装するかわからないということです。シンボルを検索してフレームワークにリンクするにはどうすればよいですか?

注目すべきは、私はすでにMobileCoreServicesフレームワークをインポートしています。関連するコードは次のとおりです。

if ([UIImagePickerController isSourceTypeAvailable:
                 UIImagePickerControllerSourceTypeCamera]) {

                UIImagePickerController* myCamera = [[UIImagePickerController alloc] init];
                myCamera.delegate = self;
                myCamera.sourceType = UIImagePickerControllerSourceTypeCamera;
                myCamera.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil];
                myCamera.allowsEditing = NO;
                [self presentModalViewController:myCamera animated:YES];

            }

ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

1 に答える 1

6

フレームワークをプロジェクト(またはターゲット)に追加してからインポートするだけです。ナビゲーターで、プロジェクトをクリックして、ターゲットを選択します。次に、[ビルドフェーズ]タブに移動し、まだ展開されていない場合は、[バイナリとライブラリのリンク]を展開します。次に、MobileCoreServices.frameworkを追加します。kUTTypeImageを使用するファイルに、次のインポートを追加します。

#import <MobileCoreServices/MobileCoreServices.h>

通常のように引用符ではなく山かっこ(<>)を使用することに注意してください。

于 2012-12-20T16:18:49.250 に答える