31

単体テスト用に XCode 5 iOS 7 プロジェクトをセットアップしました。

もちろん、単体テストのセットアップには非常に時間がかかるため、それだけの価値があると信じ続けようとしています。このエラーに何時間も苦労しています:

ld: building for iOS Simulator, but linking against dylib built for MacOSX file
'/Applications/Xcode5-DP5.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest' 
for architecture i386

解決方法に関するアイデアはありますか?

4

11 に答える 11

21

テスト ターゲット設定でフレームワーク検索パスを確認します。これらは、XCTest フレームワークを追加するときに破損する可能性があります。

プロジェクトの 1 つに XCTest を追加すると、パスの先頭に「/」が追加され、正しいバージョンが見つからなくなりました。

于 2013-09-21T13:10:12.417 に答える
13

同じ問題がありました。問題 (少なくとも私にとって) は、ビルド設定がメインの開発者フレームワーク フォルダーのFRAMEWORKS_SEARCH_PATHSにSDK フレームワーク フォルダーをリストしたことでした。

Xcode に含まれるフレームワークには、OS X 用、iOS (デバイス) 用、iOS シミュレーター用の 3 つの個別のビルドがあります。OS X ビルドはメインの開発者フォルダーにあり、他の 2 つはそれぞれのプラットフォーム フォルダーの下にあります。ここでの問題は、(プラットフォーム フォルダー内にある) SDK フォルダーを最初に検索するように指定しない場合、Xcode (より正確には、リンカー) が最初に OS X ビルドを見つけて、表示されるエラーを生成することです。

解決策は簡単です。

FRAMEWORK_SEARCH_PATHS = $(SDKROOT)/Developer/Library/Frameworks $(inherited)

ビルド設定で。プロジェクト ファイルにビルド設定を入れる場合 (お勧めしませんが、それはまた別の質問にします)、単に "フレームワーク検索パス" という名前が付けられます。

注: Xcode の理解が少し遅い場合があります。これを有効にするには、おそらくフォルダーを削除する必要がありbuildます (単にクリーンアップするよりも良いでしょう)。

于 2013-11-09T07:31:08.620 に答える
6

テストを SenTestCase から XCTestCase に変換した後も同じ問題が発生します。フレームワークディレクトリを元に戻すと修正された問題:

"$(SDKROOT)/Developer/Library/Frameworks" (non-recursive)
"$(DEVELOPER_LIBRARY_DIR)/Frameworks" (non-recursive)
于 2013-12-06T12:32:21.003 に答える
5

したがって、私にとって、この投稿で他のすべてを試した後に欠けていたものは次のとおりです。

その他のリンカー フラグ:

-framework XCTest

現在、Xcode 6.0 (iOS 8 SDK を使用) を使用しているため、[編集] > [リファクタリング] > [XCTest に変換...] オプションでこれが自動的に追加されないことに驚いています。

于 2014-09-21T00:41:49.477 に答える
4

xcode 5 にsentestingkitフレームワークを追加しているときに問題に直面していました。これらの設定は、リンカーの問題を解決するために機能しました。検索パス

于 2014-04-09T10:10:29.257 に答える
3

テスト用に別のファイルを追加すると、この問題が発生しました。(CMD + N) でこれを行う場合は、必ずテスト バンドル (つまり、'AppNameTests') のみをターゲットにしてください。

これらの .xctest バンドルのみが XCTest フレームワークにアクセスできると思います。

于 2013-08-25T04:52:11.187 に答える
3

ターゲット名を変更して移動した後も同じ問題が発生しました。私のテストは私のメイン ターゲットの一部であることが判明しました。すべてのテスト ファイルがテスト ターゲットにのみ属していることを確認してください。

.m ファイルを選択するだけで、右側のペインが開いていることを確認してください。

XCode テスト ターゲット イメージ

于 2014-05-16T20:51:18.070 に答える
1

同じ問題がありましたが、最終的にはわずかに異なる解決策になりました。

XCTest.framework を選択し、[ターゲット メンバーシップ] でテスト フォルダーのみがチェックされていることを確認します。

対象会員

于 2014-08-03T00:55:29.570 に答える
0

ターゲットの Search Framework Path( FRAMEWORK_SEARCH_PATHS) にパスが含まれていること、およびこのパスが前にリストされていることを確認してください。YourProjectTests$(SDKROOT)/Developer/Library/Frameworks$(inherited)

私の場合、両方のパスが存在していました$(inherited)が、最初のパスでした。

クレジットはhttps://stackoverflow.com/users/181947/brian-clear on Apple Mach-O linker (id) warning : building for MacOSX, but linking against dylib built for iOS

于 2014-04-03T08:05:31.307 に答える