【问题标题】:"_sqlite3_key" Symbol(s) not found for architecture i386未找到架构 i386 的“_sqlite3_key”符号
【发布时间】:2014-03-19 16:43:50
【问题描述】:

您好,我使用这个 SQLCipher(http://sqlcipher.net/ios-tutorial/) 来加密我的 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);
    }

有人知道如何解决这个问题吗?请帮帮我!!!

【问题讨论】:

  • 你需要在你的项目中添加 libsqlite3.dylib
  • 并且只构建活动架构到是

标签: ios sqlcipher


【解决方案1】:

你没有为 i386 编译它——看教程

将 i386 添加到有效的拱门和要构建的拱门中。

=> 只有 SIMULATOR 是 i386

【讨论】:

  • 如何将 i386 添加到拱门中,您能指导我吗?对不起,因为我是新手。
  • 教程见截图5
【解决方案2】:

最新的 Xcode 更新默认不再为 armv7s 架构构建。

当前Xcode 6等,将${ARCHS_STANDARD}定义为armv7, arm64

此外,每当您更新 Xcode 时,它​​都会不断纠缠您删除您自己对要构建的架构的定义,以便它可以为您决定。如果你屈服于这种坚持,那么你会发现你将不再为 armv7s 构建你的东西​​。

armv7s 指令集可在 Apple 的 A6 (iPhone 5) 和 A6X (iPad 4) CPU 中找到。以下 Apple A7(适用于 iPhone 5S、iPad Air、iPad Mini Retina)已经迁移到 64 位架构 arm64

当 Apple 向 Xcode 添加对构建 armv7s 的支持时,他们让很多使用第三方库二进制构建的开发人员感到困惑,例如 SQLCipher。

修复很简单
1. 在您的左侧导航区域中单击项目
2. 点击构建设置
3. 在 Architectures 中,您可以在 Additional SDKs 下面看到另一个 Architecture,点击它会得到两个选项
- Standard architecture (armv7, arm64)
- Other
4. 选择 Other 然后你会得到另一个弹出框,其中已经有一个名为 $(ARCHS_STANDARD) 的条目,你需要添加另一个名为 的条目armv7s点击popover底部的“+”按钮。
如下图 然后,开发人员的链接器将挑选出应用所需的架构切片。

5.如果在Valid Architecture中如果没有架构armv7s,则添加。

完成所有这些之后,您的主要架构应该如下所示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多