我尝试在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目录下构建了项目。
答案 0 :(得分:3)
IPhone不允许加载动态库。您正在使用的外部库/框架必须构建为静态库,并在构建期间编译到您的应用程序中。
为了首先实现这一点,您需要创建GDATA的静态库版本:
将新目标添加到GData项目(例如GDataIPhoneLibrary)
然后,您需要将源.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的框架之外)。所有库必须静态链接。