2011-09-16 15 views
0

私は事前にお詫び申し上げます。私が働いているプロジェクトは、いくつかのNDAの下にありますので、私はいつもと同じように具体的になることはできません。リンカエラー - プロジェクトが完全にクリーニングされていませんか?

私は、事前コンパイルされたライブラリを.hと.aファイルの形式で含むiOSプロジェクトに取り組んでいます。私はこのライブラリの特定のバージョンで開発を開始し、すべてうまくいきました。彼らはそれ以来、特定の新機能に必要な新しいバージョンをリリースしました。

旧バージョンと新バージョンの間で、いくつかの関数名が変更されました。私は新しいメソッドを呼び出すために自分のコードを更新すると、私はコンパイル時にApple Mach-O Linker Errorを取得しています:(名前は無実を保護するために変更されている)

Undefined symbols for architecture armv7: 
    "methodName", referenced from: 
    myMethod()  in MyClass.o 
ld: symbol(s) not found for architecture armv7 
collect2: ld returned 1 exit status 

私はそれはそれだけのARMv7が含まれていないように見えます知っていますコードですが、実際は赤ちゃんです。プロジェクトとターゲットのアーキテクチャー設定をStandard (armv6 armv7)に設定した場合、armv6と言う以外は同じリンカーエラーが発生します。

問題は、私は新しいプロジェクトに新しい.hと.aファイルを置くことができ、この同じメソッドを呼び出してリンカエラーを取得しないことです!

私は、清掃されていないものがあり、古い.aファイルに対してコンパイルしようとしていると感じています。私はSnow LeopardでXcode 4.1を使用しています。私は、プロジェクトからファイルを削除しようとしました。セクションのBuild Phasesセクションの.aファイルを削除して、クリーニングして、.aファイルを追加して再ビルドしましたが、まだエラーが出ます。私は狂っています。ここに。

答えて

1

OK - 私は犯人を見つけました!当然のことながら、それはBuild Settingsにありました。

新しいバージョンに切り替えると、ある時点で元に戻す必要があった場合に備えて、古いライブラリの横に新しいライブラリを置きます。どうやら古いバージョンを削除しても、ターゲットのビルド設定では、古いバージョンの.aファイルのパスがLibrary Search Pathsから削除されませんでした。古いパスを削除し、すべてが再び機能しています。