4

Picasa API を iphone に統合しようとしましたが、正常にコンパイルされましたが、起動時に次のエラーが表示されます。

dyld: ライブラリが読み込まれていません: @loader_path/../Frameworks/GData.framework/Versions/A/GData 参照元: /Users/jacksu/Library/Application Support/iPhone Simulator/User/Applications/9A7E3F54-022F-4771-BD6A -E458F5545144/PicasaTest.app/PicasaTest 理由: 画像が見つかりません

何が問題なのかわかりません。

Source/build/Debug/GData.framework から GDataFramework をインポートしました。ソースディレクトリの下にプロジェクトをビルドしました。

4

3 に答える 3

3

IPhone では動的ライブラリをロードできません。使用している外部ライブラリ/フレームワークは、静的ライブラリとしてビルドし、ビルド時にアプリにコンパイルする必要があります。

これを実現するには、まず GDATA の静的ライブラリ バージョンを作成する必要があります。

  • GData プロジェクトに新しいターゲットを追加します (GDataIPhoneLibrary など)。

    • これを行うには、[ターゲット] を右クリックし、[新しいターゲットを追加] を選択します。ダイアログで、IPhoneOS - Cocoa Touch セクションからスタティック ライブラリ テンプレートを選択します。
  • 次に、ソース .m ファイルをターゲットの Compile Sources セクションにドラッグする必要があります。(.h ファイルをドラッグしないように注意してください。そうしないと、警告が表示されます。) また、Picasa 用にビルドするだけの場合は、Command および Photos グループの下のファイルで十分です。また、単体テストとテスト ツール グループを追加しないでください。

  • 次に、プロジェクトの下の Frameworks and Libraries グループに移動し、Cocoa Touch に必要なフレームワークである Foundation フレームワークを追加します。これを追加するときは、これが使用されるように新しく作成されたターゲットのみを確認してください。(GData の Mac 版を台無しにしたくありません)

  • ターゲットの下で、作成した GDataIPhoneLibrary を選択し、(i) ボタンをクリックします (または単にダブルクリックします)。

  • [ビルド] タブで「ヘッダー」を検索し、「ヘッダー検索パス」を見つけたら、ヘッダー パスとして次の (libxml2 の場合) を追加します。

/開発者/プラットフォーム/iPhoneOS.platform/開発者/SDKs/iPhoneOS2.1.sdk/usr/include/libxml2

  • ダイアログを閉じます。

  • アクティブ ターゲットを選択して GDataIPhoneLibrary にします

  • ActiveSDK を Project-> SetActiveSDK -> Simulator - IPhone OS 2.1 に設定します。

  • これで準備が整いました -> ビルドを押すだけで、デフォルトの libGDataIPhoneLibrary.a ファイルが作成されます。

これで、この静的ライブラリを iPhone アプリケーションに追加できます。

  • 独自のアプリケーション プロジェクトに移動し、ターゲット (おそらく 1 つある) を選択し、それをダブルクリックしてダイアログを開きます。

  • [ビルド] タブで "library" を検索し、"Library Search Paths" が見つかったら、前の手順でビルドしたライブラリへのパスを追加します。

  • 次に、「-lGDataIPhoneLibrary」(lib プレフィックスと .a 拡張子を省略) を「その他のリンカー フラグ」オプション (検索ボックスでリンカーを検索すると見つかります) に追加します。

これでビルドできるはずです。これがうまくいくことを願っています。

乾杯、ケレム

于 2008-10-30T02:21:29.103 に答える
3

GData.framework を保持する場合は、それが必須のフレームワークではなく、弱いフレームワークであることを確認する必要があります。弱いフレームワークとは、アプリが最初に起動されたときにそれを必要とせず、フレームワークへの関数呼び出しが参照されたときにのみロードしようとすることを意味しますが、あなたの場合、ライブラリは静的にコンパイルされているため、呼び出される関数は必要なく解決されますフレームワークをロードします。(目的の C メッセージは実行時の関数呼び出しであることに注意してください...)

そのためには、以下を試してください。

  • アプリケーション ターゲットをダブルクリックします (以前と同様)。

  • 今回は [全般] タブを見てください。

  • GData.framework を見つけて、「Required」から「Weak」に変更します。

GDATA ヘッダー ファイルが解決されていないため、フレームワークを追加しないとコンパイル エラーが発生する可能性があります。「ヘッダー検索パス」に「ヘッダーファイル」へのリンクを配置することもできます。フレームワークをまったく追加する必要はありません。

上記とは関係なく、前にもう一つ忘れていたことがあります。-ObjC を「その他のリンカー フラグ」に追加します。

于 2008-10-30T06:45:13.843 に答える
2

iPhoneではダイナミックライブラリを使用できません(もちろん、Appleのフレームワーク以外では)。すべてのライブラリは静的にリンクされている必要があります。

于 2008-10-30T01:37:27.693 に答える