Unity 4.6.6 Xcode' armv7 / arm64架构的未定义符号'链接器错误

时间:2015-07-15 08:38:00

标签: ios xcode unity3d arm64 il2cpp

我使用Unity 4.6.6构建了我的Xcode项目,并且我一直遇到IL2CPP问题。我在构建时选择了Player设置中的通用架构(包括armv7和arm64),并且在生成的Xcode项目中,在构建时遇到以下Mach-O Linker错误。

  

架构armv7的未定义符号:     " _sqlite3_bind_int",引自:          - libSmacTracking.a中的[SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:](SmacBaseDao.o)     " _sqlite3_errmsg",引自:          - [SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao.o)          - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getColmunsInfo:transactionDbObj:](SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getTableList](SmacBaseDao.o)     " _sqlite3_column_int",引自:          - libSmacTracking.a中的[SmacBaseDao getNumber:column:](SmacBaseDao.o)     " _sqlite3_open",引自:          - libSmacTracking.a中的[SmacBaseDao dbOpen](SmacBaseDao.o)     " _sqlite3_exec",引自:          - libSmacTracking.a中的[SmacBaseDao dbOpen](SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao dbClos​​e:](SmacBaseDao.o)     " _OBJC_CLASS _ $ _ NSManagedObjectModel",引自:         libGoogleAnalyticsServices.a中的objc-class-ref(GAICoreDataUtil.o)     " _sqlite3_prepare_v2",引自:          - libSmacTracking.a中的[SmacUpdate updateDB](SmacUpdate.o)          - libSmacTracking.a中的[SmacBaseDao dbOpen](SmacBaseDao.o)          - [SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao.o)          - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getColmunsInfo:transactionDbObj:](SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getTableList](SmacBaseDao.o)         ...     " _sqlite3_step",引自:          - libSmacTracking.a中的[SmacUpdate updateDB](SmacUpdate.o)          - libSmacTracking.a中的[SmacBaseDao dbOpen](SmacBaseDao.o)          - [SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao.o)          - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getColmunsInfo:transactionDbObj:](SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getTableList](SmacBaseDao.o)         ...     " _sqlite3_column_text",引自:          - libSmacTracking.a中的[SmacBaseDao getString:column:](SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getDateString:column:](SmacBaseDao.o)     " _sqlite3_finalize",引自:          - libSmacTracking.a中的[SmacUpdate updateDB](SmacUpdate.o)          - libSmacTracking.a中的[SmacBaseDao dbOpen](SmacBaseDao.o)          - [SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao.o)          - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)          - libSmacTracking.a中的[SmacBaseDao getColmunsInfo:transactionDbObj:](SmacBaseDao.o)     " _OBJC_CLASS _ $ _ NSEntityDescription",引自:         libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore.o)         libGoogleAnalyticsServices.a中的objc-class-ref(GAICoreDataUtil.o)     " _OBJC_CLASS _ $ _ NSManagedObjectContext",引自:         libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore.o)     " _OBJC_CLASS _ $ _ NSPersistentStoreCoordinator",引自:         libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore.o)     " _kSecReturnData",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]     " _kSecMatchLimitOne",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]     " _kSecMatchLimit",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]     " _OBJC_CLASS _ $ _ NSFetchRequest",引自:         libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore.o)     " _NSOverwriteMergePolicy",引自:          - libGoogleAnalyticsServices.a中的[GAIDataStore contextWithModel:URL:](GAIDataStore.o)     " _sqlite3_reset",引自:          - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao.o)          - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)     " _kSecClassGenericPassword",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]          - KeychainItemWrapper.o中的[KeychainItemWrapper dictionaryToSecItemFormat:]          - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]     " _OBJC_CLASS _ $ _ NSAttributeDescription",引自:         libGoogleAnalyticsServices.a中的objc-class-ref(GAICoreDataUtil.o)     " _kSecAttrService",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]     " _kSecAttrLabel",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper resetKeychainItem]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]     " _NSSQLiteStoreType",引自:          - libGoogleAnalyticsServices.a中的[GAIDataStore coordinatorWithModel:URL:](GAIDataStore.o)     " _NSSQLiteErrorDomain",引自:          - 在libGoogleAnalyticsServices.a中使用[GAIDataStore performBlockAndWait:withError:](GAIDataStore.o)     " _sqlite3_bind_null",引自:          - libSmacTracking.a中的[SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:](SmacBaseDao.o)     " _kSecClass",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]          - KeychainItemWrapper.o中的[KeychainItemWrapper dictionaryToSecItemFormat:]          - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:]          - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]         ...     " _kSecAttrGeneric",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]     " _kSecAttrAccount",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]     " _kSecValueData",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper resetKeychainItem]          - KeychainItemWrapper.o中的[KeychainItemWrapper dictionaryToSecItemFormat:]          - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]     " _kSecAttrAccessGroup",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]     " _SecItemUpdate",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]     " _OBJC_CLASS _ $ _ SKProductsRequest",引自:         AppStoreProcess.o中的objc-class-ref     " _sqlite3_bind_text",引自:          - libSmacTracking.a中的[SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:](SmacBaseDao.o)     " _SecItemCopyMatching",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]          - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:]          - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]     " _sqlite3_close",引自:          - libSmacTracking.a中的[SmacBaseDao dbClos​​e:](SmacBaseDao.o)     " _SecItemAdd",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain]         + KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]     " _SecItemDelete",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper resetKeychainItem]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]     " _OBJC_CLASS _ $ _ SKPayment",引自:         AppStoreProcess.o中的objc-class-ref     " _kSecReturnAttributes",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]         KeychainUtils.o中的+ [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:]         KeychainUtils.o中的+ [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]     " _kSecAttrDescription",引自:          - KeychainItemWrapper.o中的[KeychainItemWrapper resetKeychainItem]     " _OBJC_CLASS _ $ _ SKPaymentQueue",引自:         AppStoreProcess.o中的objc-class-ref   ld:找不到架构armv7的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我已经阅读了一些关于"未定义的架构armv7符号和#34;的答案的问题。与this one类似,但顶部答案中建议的解决方案并不适用,因为在我的情况下,它将所需文件放入Xcode Project文件夹中。此外,在检查时,错误所寻找的库已在Build Phases的 Link Binary With Libraries 部分中正确添加。

如果我做错了什么,有人可以帮助或启发我吗?

我还尝试在Unity播放器设置中选择armv7或只用arm64来构建IL2CPP,但我仍然得到#34;未定义的符号用于armv7"或" arm64"的未定义符号; Mach-O Linker分别在Xcode中出错。

使用的软件: Unity 4.6.6,Xcode 6.1(将尝试升级到6.3)和iOS 8.1基础SDK

1 个答案:

答案 0 :(得分:0)

查看是否已将libsqlite3.dylib添加到所有目标。