私は、Xcodeを使用して単純なMac Objective-Cアプリケーションを作成し、2人のプレーヤーがプレーヤーあたり最大36スコアの単純なゲームをプレイするスコアを維持しようとしていました。機能が限られているため、あまり実用的なアプリケーションではなく、主に練習用です。メニュー項目がクリックされたときにポップアップする[設定]ウィンドウを使用して、アプリケーションを少し拡張しようとしました。
男性用アイテムを制御するファイルを作成し、クリックするとペン先がポップアップするようにしました。これはすべて正常に機能し、新しいウィンドウがポップアップします。ペン先にスライダーやテキストフィールドなどを配置し、アクションに接続しました。それはすべてうまくいきました。
この問題は、アプリケーションでユーザーの選択を使用できるように、ファイルをルートコントローラーにインポートしようとしたときに発生しました。
次のコンパイラエラーが発生しました。
Command /Developer/usr/bin/clang failed with exit code 1
このすべてに加えて:
Ld "/ Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Products/Debug/SimpleScoreKeeper Mac.app/Contents/MacOS/SimpleScoreKeeper Mac" normal x86_64 cd "/ Users/SimpleScoreKeeper Mac "setenv MACOSX_DEPLOYMENT_TARGET 10.6/Developer/usr/bin/clang -Arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -L/Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bj/Products/Debug -F/Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Products/Debug -filelist "/ Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac中級者/SimpleScoreKeeperMac.build/Debug/SimpleScoreKeeper Mac.build/Objects-normal/x86_64/SimpleScoreKeeper Mac.LinkFileList "-mmacosx-version-min = 10.6-framework Cocoa -o"/Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Products/Debug/SimpleScoreKeeper Mac.app/Contents/MacOS/SimpleScoreKeeper Mac "
ld:/ Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Intermediates/SimpleScoreKeeper Mac.build/Debug/SimpleScoreKeeper Mac.build/Objects-normalの重複シンボル_addScores Users/myusername/Library/Developer/Xcode/DerivedData/SimpleScoreKeeper_Mac-bjvjeiybvmwfjpfilvnpezarwkml/Build/Intermediates/SimpleScoreKeeper Mac.build/Debug/SimpleScoreKeeper Mac.build/Objects-normal/x86_64/RootController.o for Architecture x86終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)コマンド/ Developer/usr/bin/clangが終了コード1で失敗しました
私のプロジェクトの(おそらく)関連ファイルは次のとおりです。
RootController.h - All the interface declarations for stuff in the MainMenu.xib window
RootController.m - Where I need to import the files to
MainMenu.xib - The nib owned by the RootController class
Preferences.h - A file I'd want to import, but it won't work.
Preferences.m - A file I'd (maybe) want to import, but it won't work.
Preferences.xib - The nib owned by the Preferences class.
PreferencesMenuController.h - Where I declare the clickPreferences action. (Liked to MainMenu.xib)
PreferencesMenuController.m - Where I say that clickPreferences opens up Preferences nib. (Linked to MainMenu.xib)
このエラーが発生する理由はありますか?インポートしているクラスで何かする必要がありますか?かなり詳しく説明してください。私は言語に不慣れで、特定のことを行う方法がわからない場合があります。そして、私が明確にする必要があることがあれば、私に知らせてください。
編集:これは私がインポートできないファイルへのコードです。
#import "Preferences.h"
@implementation Preferences
int addScores;
- (IBAction)addScoresToggled
{
NSLog(@"addScores was toggled.");
}
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)windowDidLoad
{
[super windowDidLoad];
}
@end
また、ヘッダーファイルではなく実装ファイルを誤ってインクルードするというエラーが発生する可能性もあります。例えば#import "MyClass.h"の代わりに#import "MyClass.m"
という訳だ ld: duplicate symbol _addScore
プロジェクトには、_addScoreファイルが複数回あります。プロジェクト階層を確認してください。
まったく同じエラーを受け取った後、プロジェクトで同じ名前の2つの.hファイルを取得したことに気付きました。プロジェクトのフォルダーから複製を削除すると(参照を削除するだけでなく)、問題が解決しました。
。hファイルではなくクラスの.mファイルを誤ってインポートしたためこの問題が発生しました。
この答えを試している人のために:問題が突然現れた場合は、何を考えてください#import
最近追加した行(またはさらに良いことに、gitでgrepを実行してください!)。
select demo.xcodeproj
、パッケージの内容を表示し、project.xcworkspace
という名前のファイルとfxcuserdataを削除します
私の解決策:
プロジェクトにいくつかの.hファイルと.mファイルをインポートしました。しかし、私のクラスでは使用していません。だから私はそれらをFinderから削除しました。これにより、上記のエラーが発生しました。
そのため、プロジェクトの設定/ビルドフェーズ=>に進み、それらのファイル参照も削除する必要がありました。彼らは赤い色でした。 XcodeからではなくFinderから削除されているため
RestKitを使用しているときに同じエラーに直面していました。 RestKitターゲットを選択し、クリーンアップ/ビルドしました。次に、メインターゲット(アプリケーション)を選択し、クリーンアップ/ビルドしました。それは私のためにそれを修正しました。
DUPLICATEまたはAMBIGUOUSヘッダーまたは実装ファイル
これは、インポートするファイルへの潜在的なパスが複数ある場合に発生する可能性があります。たとえば、MyClass.h
をインポートしたが、プロジェクトにMyClass.h
のインスタンスが2つある場合
誤って[製品]-> [実行]ではなく[製品]-> [テスト]をクリックしたときに、このエラーが発生しました。 [製品]-> [クリーン]をクリックしてプロジェクトをクリーンアップしたところ、エラーはなくなりました。
最近、このエラーに遭遇しました。 2つの異なるファイルから同じ.hファイルをインポートしていますか?これは私にとってこのエラーを引き起こしました。
変数addScoreを複数のファイルでアクセスできるようにする場合は、1つの.mファイルで次のように定義する必要があります。
int addScore;
関連する.hファイルで次のように宣言します。
extern int addScore;
宣言で「extern」キーワードを省略した場合、コンパイラーは、.hがインポート/インクルードされるすべてのファイルのaddScoreの再定義として認識します。それはあなたが見ているエラーにつながるでしょう。
同じアプリケーション識別子で2つのプロジェクトを実行した後、同じ問題が発生しました。
削除後(<yourlogin>をアカウント名に置き換えます):
project.xcworkspace/xcuserdata/<yourlogin>.xcuserdatad/UserInterfaceState.xcuserstate
シミュレーターで実行を開始しましたが、まだデバイス上では実行されていないため、開いているすべてのプロジェクトを閉じ、新しいプロジェクトを作成してそこにファイルをコピーし、最終的に機能しました。
Xcode 4.3および4.4でプロジェクトをアーカイブすると、この種のエラーが発生します。最終的に、標準(32/64ビットIntel)から64ビットIntelに切り替えるとこのエラーが発生しました。
別の原因がありました。Xcode4.4を使用すると、最小値が10.6のときに展開ターゲットが10.4に設定されました。それは私にとって解決しました。