1

最近、静的ライブラリ(mobclix)をiPhoneプロジェクトに追加したため、BaseSDKを3.0に設定する必要がありました。このライブラリは2.2と互換性があると主張されており、これまでのところ、それは本当のように見えます。プロジェクトの展開ターゲットを2.2に設定しました。そこに問題はありません。

現在、この同じプロジェクトでlibxml2も使用しています。どうやら、OS 3.0のlibxml2.2.dylibはOS2.X(それぞれバージョン10と9)よりも新しい。しかし、libxml2を使用する私のコードは、OS2.Xに含まれているlibxml2バージョンとすでに互換性がありました。Base SDKを3.0に設定する必要があったため、「互換性バージョン」/最小バージョン要件/依存関係は自動的に新しいバージョンのlibxml2に設定されます。OS 2でアプリを実行しようとすると、(明らかに)次のランタイムエラーが発生します。

  Dyld Error Message:
  Library not loaded: /usr/lib/libxml2.2.dylib
  Referenced from: /Users/Martijn/Library/Application Support/iPhone Simulator/User/Applications/4D5456DE-F297-4DF4-ACA6-DA8BBBBBA914/Luisterpaal.app/Luisterpaal
  Reason: Incompatible library version: Luisterpaal requires version 10.0.0 or later, but libxml2.2.dylib provides version 9.0.0

どこかでバージョン要件を上書きすることは可能ですか?またはこの問題を解決するための他のアイデア?

4

2 に答える 2

0

互換性バージョンは、ビルド中に現在のSDKのdylibに埋め込まれているバージョンに従って設定されます。これを変更またはオーバーライドする方法が見つかりません。

ただし、「ライブラリを使用したバイナリとのリンク」ブランチの下のXcodeのターゲットには、dylibを「弱く」リンクするオプションがあります。これにより、dylibのロード時(ランタイム)のバージョンチェックがスキップされます。その場合、既存の関数のみを呼び出すのはあなたの責任です。存在しない関数を呼び出すと、アプリケーションがクラッシュします。

于 2009-08-17T09:42:22.423 に答える
0

どうやら、libxmlとの互換性を壊すSDK3.0の変更がありました。Appleはそれについてここに投稿しました:

http://developer.apple.com/iphone/library/qa/qa2009/qa1659.html

于 2010-03-10T21:17:51.227 に答える