“_sqlite3_key”符号(s)找不到架构i386
您好我用这个SQLCipher( http://sqlcipher.net/ios-tutorial/ )来encryption我的sqlite,但是当我编译我遇到这个错误
"_sqlite3_key", referenced from: -[LCAppDelegate application:didFinishLaunchingWithOptions:] in LCAppDelegate.o Symbol(s) not found for architecture i386
当我在AppDelegate中使用这段代码时,就发生了这种情况
#import <sqlite3.h> ... NSString *databasePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent: @"sqlcipher.db"]; sqlite3 *db; if (sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK) { const char* key = [@"BIGSecret" UTF8String]; sqlite3_key(db, key, strlen(key)); if (sqlite3_exec(db, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) { // password is correct, or, database has been initialized } else { // incorrect password! } sqlite3_close(db); }
有谁知道如何解决这个问题? 请帮帮我 !!!
你没有编译i386 – 看教程
添加i386到有效的拱形和拱形来build立。
=>只有SIMULATOR是i386
默认情况下,最新的Xcode更新不再为armv7s架构而build立。
当前的Xcode 6等等,将$ {ARCHS_STANDARD}定义为armv7,arm64 。
另外,无论何时您更新Xcode,它都会让您纠缠不清您自己定义要构build的体系结构,以便为您做出决定。 如果你屈服于这种坚持,那么你发现你不会再为armv7sbuild立你的东西。
armv7s指令集可在Apple的A6(iPhone 5)和A6X(iPad 4)CPU中find。 以下Apple A7(iPhone 5S,iPad Air,iPad Mini Retina)已经转移到了64位架构arm64 。
当苹果增加对Xcode构buildarmv7的支持时,他们困惑了不less使用第三方库的二进制版本的开发人员,如SQLCipher。
修复很简单
1.在左侧导航区域点击项目
2.点击Build Settings
3.内部架构你可以看到另外一个架构下面的其他SDK,点击它你会得到两个选项
– 标准架构(armv7,arm64)
– 其他
4.selectOther,然后你会得到另一个popover,那里将会有一个名为$(ARCHS_STANDARD)的入口,你需要通过点击popover底部的“+”button来添加另一个叫做armv7s的入口。
如下所示 开发人员的链接器将挑选出应用程序所需的体系结构片。
5.如果在有效架构中,如果架构armv7s不存在,那么添加它。
做完所有这些之后,您的主体结构应该如下所示