6

iPhone アプリで PLDatabase フレームワークを使用しようとしています。フレームワークを Xcode プロジェクトに追加しました。ただし、アプリを実行すると、次のエラーでクラッシュします。

dyld: Library not loaded: @loader_path/../Frameworks/PlausibleDatabase.framework/Versions/A/PlausibleDatabase
  Referenced from: /Users/todd/Library/Application Support/iPhone Simulator/User/Applications/BB3C66B2-A5BB-4329-B163-AB0072411AF1/Congress.app/Congress
  Reason: image not found

フレームワークを見つけるためにディスク上のどこに置く必要があるのか​​ 正確にはわかりません。

ありがとう

4

3 に答える 3

8

iPhone が動的リンクをサポートしていないというのは、厳密には真実ではありません。実際、App Store によってインストールされたアプリケーションは動的にリンクできません。

アプリ ストア / ituned は、プログラムを /private/var/mobile/... ディレクトリにインストールします。そのサブディレクトリに存在する開かれたプログラムはすべてchrootされ、開かれたときに特定の権利が剥奪されます. chroot されたプロセスは fork できず、バックグラウンドで実行できず、動的ライブラリをロードできず、ディスクの小さな保護領域の外にファイルを保存できません (写真ディレクトリへの写真を除く)。 )。

とはいえ、iPhone は動的リンクをサポートする最新のオペレーティング システムを実行します。「ジェイルブレイク」の行為は、実際には、chroot ジェイルの外にプログラムをインストールすることであり、その後、フォークなどを実行して、ファイルをディスク上の他の場所に保存し、動的コードをロードすることができます。

Apple (およびオープンな iPhone コミュニティ) には、バックグラウンドで実行してライブラリをロードできる、携帯電話上で実行される多数のプログラム (MobilePhone、Mobile Safari、SpringBoard アプリケーションなど) があります。それらはディスク上の別の場所に配置されます (多くの場合、/private/var/stash/Applications)。

そのため... アプリ ストアでアプリを販売したい場合、動的ライブラリを読み込むことはできません。ほとんどの人にとって、これはまったくロードできないことを意味します。しかし、cydia (ジェイルブレイクされた一般的な電話アプリのインストーラー) を介してアプリを配布したい場合は、電話をジェイルブレイクして動的ライブラリをロードするだけで済みます。実際、あなたが学んだように、itunes のインストール プロセスが犯人であるため、自分の電話に書き込む自分のアプリから dylib をロードすることさえできません...脱獄しない限り。

于 2009-02-21T09:45:20.670 に答える
6

RE @mipadi: ZeroLink は Xcode 3.1 で削除され、iPhone SDK には存在しません。正解はルイスです。iPhone は、開発者が作成したアプリケーションで動的にロードされるフレームワークをサポートしていません。

Xcode には、静的ライブラリ用の優れたユーザー インターフェイスがあります。それらをプロジェクトにドラッグするだけで、リンク フェーズに追加されます。リンカ フラグに煩わされる必要はありません。問題が発生するのは、これらの静的ライブラリで提供されているヘッダーを使用する必要がある場合 (ヘッダー検索パスを手動で追加する必要がある場合)、または静的ライブラリが利用可能な dylib と競合する場合 (手動で -l フラグを追加する必要がある場合) です。 .

于 2009-02-04T00:31:48.127 に答える