如何将Picasa API集成到我的iPhone应用程序中?

时间:2008-10-30 00:56:34

标签: iphone picasa

我尝试在iphone上集成Picasa API,编译得很好,但我发现启动时出现以下错误。

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。我在Source目录下构建了项目。

3 个答案:

答案 0 :(得分:3)

IPhone不允许加载动态库。您正在使用的外部库/框架必须构建为静态库,并在构建期间编译到您的应用程序中。

为了首先实现这一点,您需要创建GDATA的静态库版本:

  • 将新目标添加到GData项目(例如GDataIPhoneLibrary)

    • 您可以通过右键单击“目标”并选择“添加新目标”来执行此操作。在对话框中,从IPhoneOS - Cocoa Touch部分选择静态库模板。
  • 然后,您需要将源.m文件拖到目标的Compile Sources部分。 (确保不要拖动.h文件,否则会收到警告。)此外,如果您只是为Picasa构建,那么命令和照片组下的文件就足够了。另外,不要添加单元测试和测试工具组。

  • 接下来转到项目下的Frameworks and Libraries组,并添加Foundation框架,这是Cocoa Touch的必要框架。当您添加此项时,请确保仅检查新创建的目标以供使用。 (你不想弄乱Mac版的GData)

  • 现在在目标下,选择您创建的GDataIPhoneLibrary并单击(i)按钮(或只需双击它)

  • 在“构建”选项卡下搜索“标题”,找到“标题搜索路径”后,将以下(对于libxml2)添加为标题路径

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/usr/include/libxml2

  • 现在关闭对话框。

  • 选择您的Active Target为GDataIPhoneLibrary

  • 将ActiveSDK设置为Project-> SetActiveSDK - >模拟器 - IPhone OS 2.1

  • 现在你准备好了 - >只需点击构建,您将拥有默认的libGDataIPhoneLibrary.a文件。

现在您可以将此静态库添加到您的iPhone应用程序:

  • 转到您自己的应用程序项目并选择目标(您可能有一个)并双击它以打开对话框。

  • 在“构建”选项卡中搜索“库”,找到“库搜索路径”后,添加刚刚在上一步中构建的库的路径。

  • 然后将“-lGDataIPhoneLibrary”(省略lib前缀和.a扩展名)添加到“Other Linker Flags”选项(您可以通过在搜索框中搜索链接器找到它。

现在应该有希望建立。希望这对你有用。

干杯, 凯雷姆

答案 1 :(得分:3)

如果你保留GData.framework,那么你需要确保它不是一个必需的框架,而是一个弱框架。弱框架意味着,应用程序在首次启动时不需要它,并且仅在引用对框架的函数调用时尝试加载它,但在您的情况下,因为库是静态编译的函数,所以调用的函数将在不需要的情况下解析加载框架。 (注意目标C消息是运行时的函数调用...)

为此,请尝试以下方法:

  • 双击您的应用目标(如前所述)

  • 这次查看“常规”标签

  • 找到GData.framework并将其从“必需”更改为“弱”

您可能在不添加框架的情况下收到编译错误,因为GDATA头文件尚未解析。您也可以在“标题搜索路径”中添加“头文件”链接,而不需要添加框架。

与上述无关,我之前忘了一件事。将-ObjC添加到“其他链接器标志”。

答案 2 :(得分:2)

您无法在iPhone上使用动态库(当然,在Apple的框架之外)。所有库必须静态链接。