我开发了一个使用sqlite3作为数据库的iphone应用程序。那个时候我的OS X版本是豹子。所以添加libsqlite3.0.dylib添加到框架并编译没有任何问题,它编译和任何问题我也可以在设备上运行它。
本周我在我的Mac上安装了Snow Leopard。删除旧的Leopard版本并安装新的Snow leopard系统。
但我的问题是现在我无法编译该程序,因为它会给sqlite3库带来错误。我使用选择目标然后选择文件添加了sqlite3.0.dylib。还尝试直接从/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/lib
添加选择它当我编译到设备和模拟器时,我得到两个不同的错误
编译到设备时, ld:警告:在/opt/local/lib/libsqlite3.0.dylib中,文件不是必需的架构*
编译到模拟器时, ld:警告:在/opt/local/lib/libsqlite3.0.dylib中,文件是为不支持的文件格式构建的,而不是所链接的体系结构(i386) LD:警告:在文件中/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/lib/libSystem.dylib,缺少必需的i386硬件架构 LD:在文件中/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/lib/libobjc.A.dylib,缺少必需的i386硬件架构 命令/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2失败,退出代码为1
我也尝试添加sqlite3.dylib(我认为sqlite3.0.dylib链接到sqlite3.dylib。)但没有运气。
那里的任何人都可以给我任何帮助。我真的想让这个工作。如果您想了解更多详情,请告诉我。
谢谢你, Waruna
答案 0 :(得分:0)
您必须链接到SDK路径中的库。当您选择“添加框架...”时,您将看到默认路径中可用的框架列表。不要离开此列表,而是从列表中选择sqlite库。
位于/ opt / local / lib /中的库仅供计算机上运行的应用程序使用。不适用于iPhone应用程序。
答案 1 :(得分:0)
原始请求者可能会迟到一点。但是对我来说有用的是去查找并从项目的文件夹中删除libsqlite.dylib文件并再次添加框架引用。
希望这会有所帮助
答案 2 :(得分:0)
我不明白为什么要添加与您的操作系统捆绑在一起的库。为什么不直接将源添加到项目中?它可以让您自由地根据自己的条件更新SQLite的版本,而不依赖于您的盒子上的SQLite。如果用户运行较旧版本的操作系统会发生什么?你会强迫他们升级他们的系统吗?