“_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不存在,那么添加它。

做完所有这些之后,您的主体结构应该如下所示

在这里输入图像说明