web-dev-qa-db-ja.com

Xcode 6.1のアーキテクチャx86_64の未定義シンボル

突然Xcodeがコンパイル時にこのエラーを投げました:

Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Format", referenced from:
 objc-class-ref in WOExerciseListViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

いくつかの調査を行った後、使用しているライブラリが64ビットバージョンと互換性がないことを理解するかもしれません。しかし、これは非常に奇妙です。その間、私は少なくとも1週間は同じライブラリで作業をしており、その間にコンパイルの問題は1つもありませんでした。 2つのライブラリはクラスの集まりで構成されており、プロジェクトからそれらを削除すると、同じ問題が発生しました。ライブラリを自分で作成したことがないので、使用しているライブラリが64ビット(?)と互換性があるかどうかはわかりません。また、ターゲットパネルでアーキテクチャの次の変更を試みました。

  • アーキテクチャに$(ARCHS_STANDARD_INCLUDING_64_BIT)を追加しました
  • アクティブなアーキテクチャのみをビルド->「NO」に設定
  • 「有効なアーキテクチャ」の場合-> arm64、armv7、およびarmv7sに設定
  • derivedDataフォルダーとその内容を削除し、クリーンアップして再構築しました

しかし、これらの変更は機能しません。誰か、これについての手がかりがありますか?ありがとう

37
batistomorrow

どうやら、クラス「フォーマット」が問題に関与しているようです。このクラスの宣言を確認してください。特に、別のクラス内で宣言した場合は、おそらく@implementationなどを忘れた可能性があります。

41
Banane

そのファイルがビルドフェーズに含まれているかどうかを確認します->コンパイルされたソース

41
user3894518

WOExerciseListViewControllerがターゲットメンバーであることを確認してください。それは私のために働いた!

enter image description here

19
Youssef Gamil

Xcode 6.4でXcode 4〜ishで作成された(非常に)古いプロジェクトを開いたときに、このエラーが発生しました。リンクされたフレームワークはプロジェクトのサイドバーに表示されていましたが、ターゲットビルドフェーズタブにリンクされたライブラリがありませんがあることを見落としていました。修正したら、問題なくコンパイルされました。

4
auco

はい、使用しているライブラリは64ビットバージョンと互換性がないと思いますが、問題を解決できます-

[ビルド設定]> [アーキテクチャ]に移動し、$(ARCHS_STANDARD)$(ARCHS_STANDARD_32_BIT)に置き換えます

Xcodeがプロジェクトを32ビットサポートバージョンでビルドするようにします。

4
Nishant Mahajan

「ライブラリとバイナリをリンク」セクションでライブラリをリンクしていませんでした。

2
Alberto M

@implementationパートを書くのを忘れていたことがわかりました。

2
chengbo

Xcode Build Settingsに移動して同じ問題を解決し、アーキテクチャでXcode 6.1.1標準アーキテクチャを次のように変更しました-

$(ARCHS_STANDARD_32_BIT)

1
Hemanshu Liya

まったく同じエラーが発生したので、xcodeを再起動して解決しました。

私にとっては、svnの更新後に問題が発生し、問題のファイルはプロジェクトフォルダーに追加されましたが、xcode(9.3.1)に表示されることはありませんでした。

1
Seif Meddeb

ファイルへの参照を削除し、プロジェクトに再度追加することで問題を解決しました。私の場合はうまくいきます。

0

クラスをコピー/貼り付けて、.mファイルで名前を変更するのを忘れた場合も同じエラーが発生します。

0
zeeawan