0

このiOSlibPTImageAlbumViewControllerを、作業中の既存のプロジェクトに追加しようとしていますが、コンパイルエラーが発生します。サンプルプロジェクトが含まれており、他のいくつかのライブラリに依存しています。サンプルプロジェクトは問題なく動作しますが、エラーなしで自分のプロジェクトに移行することはできません。プロジェクト間でファイルをドラッグしてプロジェクトから直接ファイルをプルしようとしましたが、それでも機能しません

足りないものはありますか?

アーキテクチャarmv7の未定義のシンボル: "_ OBJC_METACLASS _ $ _ NetworkPhotoAlbumViewController"、参照元:_OBJC_METACLASS _ $ _ PTImageAlbumViewController in PTImageAlbumViewController.o "_OBJC_CLASS _ $ _ NIPhotoAlbumControllerView" CLASS_AlbumScrollView "、参照元:_OBJC_CLASS _ $ _ PTImageAlbumView in PTImageAlbumViewController.o "_NIPathForBundleResource"、参照元:-[PTImageAlbumViewController viewDidLoad] in PTImageAlbumViewController.o "_OBJC_METACLASS _ $ _ NIPhotoAlbumScrollView"、参照元:_OBJC_METACLASS _ $ _ PTImageAlbumView in PTImageAlbumView.o ld :リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)

4

2 に答える 2

1

見つからないのはニンバスファイルです。

プロジェクトに nimbus ファイルと SDURLCache ファイルを追加した場合は、それらがアプリケーションのターゲットに含まれていることを確認するだけです。

すべてのファイルがプロジェクトに入り、正しいターゲットにあることを確認してください。たとえば、最初のエラーは NetworkPhotoAlbumViewController.m に関するものです。そのファイルはプロジェクト内にあり、正しいターゲットにありますか?

もしそうなら、もう1つの可能性は、何らかの理由でこのアーキテクチャ用に構築されていないということです. DerivedData ディレクトリからオブジェクト ファイルが保存されている場所までツリーをナビゲートし、nm を使用してオブジェクト ファイルで欠落しているシンボルを検索することで確認できます。

私のマシンでの例:

cd /Users/username/Library/Developer/Xcode/DerivedData/AlbumDemo-eyqszubjyqhczreurkblqktoxjja/Build/Intermediates/AlbumDemo.build/Debug-iphonesimulator/AlbumDemo.build/Objects-normal/i386

nm NetworkPhotoAlbumViewController.o | grep _NetworkPhotoAlbumViewController
00000000 t -[NetworkPhotoAlbumViewController shutdown_NetworkPhotoAlbumViewController]
0000e0fc s -[NetworkPhotoAlbumViewController shutdown_NetworkPhotoAlbumViewController].eh
0000cde8 S _OBJC_CLASS_$_NetworkPhotoAlbumViewController
0000c9b4 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._activeRequests
0000c9bc S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._highQualityImageCache
0000c9b0 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._queue
0000c9b8 S _OBJC_IVAR_$_NetworkPhotoAlbumViewController._thumbnailImageCache
0000cdfc S _OBJC_METACLASS_$_NetworkPhotoAlbumViewController
0000cfe0 s l_OBJC_$_INSTANCE_METHODS_NetworkPhotoAlbumViewController
0000d084 s l_OBJC_$_INSTANCE_VARIABLES_NetworkPhotoAlbumViewController
0000d0e0 s l_OBJC_$_PROP_LIST_NetworkPhotoAlbumViewController
0000d100 s l_OBJC_CLASS_RO_$_NetworkPhotoAlbumViewController
0000cfb8 s l_OBJC_METACLASS_RO_$_NetworkPhotoAlbumViewController

これらのシンボルの 2 列目に「U」がないという事実は、それらがこのオブジェクト ファイルで定義されていることを意味します。すべての nm 出力の意味は、 nm の man ページで確認できます。

于 2012-05-17T21:24:57.970 に答える
0

新しいクラス ファイルを作成すると、Xcode がそれを「コンパイル済みソース」に追加しないことがあります。

プロジェクト アイコン > ターゲット > ビルド フェーズ > コンパイル ソースを選択します。

+ ボタンをクリックして Class *.m ファイルを追加します。

于 2013-07-19T16:06:40.257 に答える