プロジェクトにフレームワークを追加しようとしています。Build Phases -> Link Binary With Libraries -> "+ button" で追加します。それらが追加されると赤く表示され、コードをコンパイルしようとすると次のようになります。
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ASIHTTPRequest", referenced from:
objc-class-ref in LoginViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
しばらくすると、[ビルド フェーズ] タブでフレームワークが黒いテキストに戻りますが、コードはまだコンパイルされません。ファイルはすべてフォルダー内に無傷であり、場所は他のすべての作業フレームワークと同様に「SDK に相対的」です。問題のフレームワークもプロジェクトフォルダーに保存されていたときに、以前にこの問題が発生しましたが、今回はそうではありません。このトピックに関する他の多くのスレッドを読みましたが、それらは以前のバージョンの XCode に関するものであるようです。助けていただければ幸いです。
編集: MobileCoreServices および CFNetwork フレームワークを追加しようとしています。LoginViewController は私のプロジェクトの一部です。
編集:フレームワークが含まれているかどうかに関係なく、同じエラーが発生します。これは、フレームワークを含めた後、何らかの理由で XCode がフレームワークを見つけられないためだと思います。ここでは、フレームワークを参照するクラスを使用します。これは LoginViewController からのものです
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL: url];
[request setCompletionBlock:^{
NSLog(@"File downloaded.");
//NSData *data = [request responseData];
//do stuff with data
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"Error downloading file: %@", error.localizedDescription);
}];
[request startAsynchronous];
データを取得するために非同期サーバー呼び出しを実行しようとしています。
編集:私のプロジェクトのいくつかの .m ファイルのターゲット メンバーシップがチェックされていないことがわかりました。これを修正した後、私はまだ同様の問題を抱えています。これが私の新しいエラーです
Undefined symbols for architecture i386:
"_kReachabilityChangedNotification", referenced from:
+[ASIHTTPRequest registerForNetworkReachabilityNotifications] in ASIHTTPRequest.o
+[ASIHTTPRequest unsubscribeFromNetworkReachabilityNotifications] in ASIHTTPRequest.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
これを調査したところ、MobileCoreServices と CFNetwork フレームワークが見つからないことが唯一の原因のようです。これが、元の問題が原因であると私が考えたものです。フレームワークを含めましたが、XCode はフレームワークが存在しないように動作します。