Как интегрировать API Picasa в приложение для iPhone? - PullRequest
4 голосов
/ 30 октября 2008

Я пытался интегрировать API Picasa на iphone, компилируется нормально, но я вижу следующую ошибку при запуске.

dyld: библиотека не загружена: @loader_path /../ Frameworks / GData.framework / Versions / A / GData Ссылка на: / Пользователи / jacksu / Библиотека / Поддержка приложений / Симулятор iPhone / Пользователь / Приложения / 9A7E3F54-022F-4771-BD6A-E458F5545144 / PicasaTest.app / PicasaTest Причина: изображение не найдено

Я не уверен, в чем может быть проблема.

Я импортировал GDataFramework из Source / build / Debug / GData.framework. Я построил проект в каталоге Source.

Ответы [ 3 ]

3 голосов
/ 30 октября 2008

IPhone не позволяет загружать динамические библиотеки. Используемая вами внешняя библиотека / фреймворк должна быть собрана как статическая библиотека и скомпилирована в ваше приложение во время сборки.

Для того, чтобы это произошло в первую очередь, вам нужно создать статическую библиотечную версию GDATA:

  • Добавить новую цель в проект GData (скажем, GDataIPhoneLibrary)

    • Это можно сделать, щелкнув правой кнопкой мыши Цель и выбрав «Добавить новую цель». В диалоговом окне выберите шаблон статической библиотеки в разделе IPhoneOS - Cocoa Touch.
  • Затем вам нужно перетащить исходные файлы .m в раздел Compile Sources цели. (Не перетаскивайте файлы .h, в противном случае вы получите предупреждения.) Кроме того, если вы просто создаете для Picasa, то файла под группами Command и Photos должно быть достаточно. Также не добавляйте модульные тесты и группы тестовых инструментов.

  • Далее перейдите в группу Frameworks and Libraries в рамках проекта и добавьте среду Foundation, которая является необходимой средой для Cocoa Touch. Когда вы добавляете это, удостоверьтесь, что проверяете только что созданную цель для этого. (Вы не хотите испортить версию GData для Mac)

  • Теперь в разделе «Цели» выберите созданную библиотеку GDataIPhone и нажмите кнопку (i) (или просто дважды щелкните по ней)

  • На вкладке «Сборка» найдите «заголовок» и, найдя «Пути поиска по заголовку», добавьте следующее (для libxml2) в качестве пути заголовка

/ Разработчик / Платформы / iPhoneOS.platform / Разработчик / SDKs / iPhoneOS2.1.sdk / USR / включать / libxml2

  • Теперь вы закрываете диалоговое окно.

  • Выберите вашу активную цель как GDataIPhoneLibrary

  • Установите свой ActiveSDK в Project-> SetActiveSDK -> Simulator - IPhone OS 2.1

  • Теперь все готово -> просто нажмите build и у вас будет файл libGDataIPhoneLibrary.a по умолчанию.

Теперь вы можете добавить эту статическую библиотеку в приложение для iPhone:

  • Перейдите в собственный проект приложения и выберите цель (у вас, вероятно, есть) и дважды щелкните ее, чтобы открыть диалоговое окно.

  • На вкладке «Построение» найдите «библиотека» и, найдя «Пути поиска в библиотеке», добавьте путь к той библиотеке, которую вы только что создали на предыдущем шаге.

  • Затем добавьте «-lGDataIPhoneLibrary» (без префикса lib и расширения .a) к опции «Другие флаги компоновщика» (которую вы можете найти, выполнив поиск компоновщика в окне поиска.

Теперь это надо надеяться построить. Надеюсь, это работает для вас.

Ура, Керем

3 голосов
/ 30 октября 2008

Если вы сохраняете GData.framework, вам нужно убедиться, что это не обязательная структура, а скорее слабая структура. Слабый фреймворк означает, что приложение не будет требовать его при первом запуске и будет пытаться загрузить его только при обращении к вызову функции фреймворка, но в вашем случае, поскольку библиотека статически компилируется, вызываемые функции будут решаться без необходимости загрузить рамки. (Обратите внимание, что сообщения цели C являются вызовами функций во время выполнения ...)

Для этого попробуйте следующее:

  • Дважды щелкните цель приложения (как раньше)

  • На этот раз посмотрите на вкладку General

  • Найдите GData.framework и измените его с «Обязательный» на «Слабый»

Возможно, вы получаете ошибки компиляции без добавления каркаса, поскольку файлы заголовков GDATA не разрешаются. Вы могли бы также поместить ссылку на «заголовочные файлы» в «Путь поиска заголовка», чем вам вообще не понадобится добавлять фреймворк.

Не относясь к вышесказанному, я забыл еще одну вещь ранее. Добавьте -ObjC к вашему «другому флагу компоновщика».

2 голосов
/ 30 октября 2008

Вы не можете использовать динамические библиотеки на iPhone (вне рамок Apple, конечно). Все библиотеки должны быть статически связаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...