[解決済み】Xcodeのビルド失敗 "アーキテクチャx86_64の未定義シンボル"
質問内容
Xcode初心者の質問です。
Xcode 4.6.3を初めて体験しました。
私は、ペアリングされたBTデバイスを検索し、NSLogにそれらを印刷する、非常に単純なコンソールプログラムを書こうとしています。
以下のようなエラーでビルドされます。
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_IOBluetoothDevice", referenced from:
objc-class-ref in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
めちゃめちゃ探しました。よくある問題は、ヘッダーファイルだけがインポートされ、実装(*.m-file)がリンカによって見つからないファイルへの参照であるはずです。しかし、IOBluetoothライブラリはFoundation Frameworkのような標準的なFrameworkなのです。
上記の文章で何が足りないのでしょうか?
また、32ビットマシン用にビルドしてみました(ビルドは再び失敗)。これは明らかにリンカーエラーですが、ヘッダーファイルが IOBluetooth という標準的に含まれる Framework のものであるにもかかわらず、x86 と x64 の両方のアーキテクチャで IOBluetoothDevice の実装を見つけることに問題があること以外は、それが何に関連しているか見当もつかないのですか?
ちなみに私のメインコード "main.m" はこうなっています。
#import <Foundation/Foundation.h>
#import <IOBluetooth/objc/IOBluetoothDevice.h> // Note the import for bluetooth
#import <IOBluetooth/objc/IOBluetoothDeviceInquiry.h> // Note the import for bluetooth
int main(int argc, const char * argv[])
{
@autoreleasepool {
IOBluetoothDevice *currentDevice;
NSArray *devices = [ IOBluetoothDevice pairedDevices];
for (id currentDevice in devices){
NSLog(@"%i : %@",[ currentDevice classOfDevice ], [ currentDevice name ]);
}
}
return 0;
}
何かお手伝いやご指摘がありましたら、よろしくお願いします。
どのように解決するのですか?
プロジェクトにIOBluetooth.frameworkが含まれていないようです。以下の方法で追加することができます。
-
左ペインの左上にある自分のプロジェクト(青いアイコン)をクリックする。
-
中央のペインで、Build Phasesタブをクリックします。
-
"Link Binary With Libraries"の下にある、プラスボタンをクリックします。
-
リストからIOBluetooth.frameworkを探し、Addをクリックします。
これで、IOBluetooth.framework の定義がリンカーに検出されるようになります。左ペインでフレームワークをクリックし、右ペインでフレームワークのターゲットメンバーシップを見ることによって、フレームワークがターゲットのメンバーであることを確認できます (整理のためにフレームワークを Frameworks グループの下に移動させたことに注意してください)。
関連
-
[解決済み] Xcode でアーキテクチャ x86_64 のシンボルが重複している。
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] MPProgressHUDとNSSessionを使用したデータシンクの読み込み
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Xcode プロジェクトのための Git 無視ファイル
-
[解決済み] NSStringをNSNumberに変換する方法
-
[解決済み] NSDictionary または NSMutableDictionary にキーが含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
-
[解決済み] objective-c/cocoaで例外を投げる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アーキテクチャ armv7 の未定義シンボル
-
[解決済み] カスタムメイドのフレームワークで「セレクタ 'Hello:'の既知のクラスメソッドがありません」というエラーが発生する。
-
[解決済み] Objective-CでNSNumberをintに変換する。
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] objective-c/cocoaで例外を投げる
-
[解決済み】セマンティックな問題。プロパティの合成ゲッターは、「所有する」オブジェクトを返すためのCocoa命名規則に従っている。
-
[解決済み】ブロック宣言の構文リスト
-
[解決済み】iOS7でステータスバーを隠すことができない。
-
[解決済み】Objective-C: パス文字列からファイル名を抽出する
-
[解決済み】Xcodeのビルドフォルダはどこですか?