1

プロジェクトでXcode 3.2.1を使用しています。ベース SDK は iPhone Device 3.0で、iPhone OS Deployment Target は iPhone OS 2.0です。つまり、下位互換性のあるアプリケーションです。

問題はMapKit Frameworkです。Weak linked libraryとして追加されていますが、アプリは「Device - 2.2.1」ターゲットにリンクしていません。アイデアが尽きました...ライブラリを「弱い」リンクとしてマークする以外に何ができますか? 以前は機能していましたが、現在は機能していません。

これがコマンドラインの一部です。これは私には問題ないようです。

-framework Foundation -framework UIKit -framework CoreGraphics
 -weak_framework CoreLocation -weak_framework MapKit

エラーメモ:

ld: framework not found MapKit
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.0 failed with exit code 1
4

3 に答える 3

1

問題と解決策を明確にするために:

問題: iPhone OS 2.x と 3.x の両方のデバイスで動作する下位互換性のあるアプリケーションを作成したいと考えていました。MapKit など、利用可能な場合は 3.x 固有の機能を使用します。

解決策: 「Base SDK as iPhone Device 3.0」および「iPhone OS Deployment Target as iPhone OS 2.0」を設定します。iPhone OS 2.x デバイスを接続し (私の場合は iPod Touch で、利用可能な最新の iPod ソフトウェア バージョンへのアップグレードを拒否します)、左上隅でターゲットを「デバイス - 3.0」として選択します。接続されているデバイスが 3.0 と互換性がない場合でも同様です。全然!!!

かなり紛らわしく、最初は完全に非論理的に見えますが、それが機能する方法です!

于 2009-12-17T07:23:10.760 に答える
1

アプリを 2.2.1 で実行するには、そのメニューで 2.2.1 を選択する必要はありません。「Active SDK」を 3.0 以降に設定したままにしてください。

于 2009-12-16T17:47:17.177 に答える