首页 文章

Unity 4.6.6 Xcode 'Undefined symbol for armv7/arm64 architecture'链接器错误

提问于
浏览
0

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

架构armv7的未定义符号:“_ sqlite3_bind_int”,引自: - [SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:] in libSmacTracking.a(SmacBaseDao.o)“_ sqlite3_errmsg”,引用自: - [SmacBaseDao execSelectQuery:condition:colmun :libSmacTracking.a中的:transactionDbObj:isTmp:](SmacBaseDao.o) - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao.o) - libSmacTracking中的[SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] .a(SmacBaseDao.o) - libSmacTracking.a中的[SmacBaseDao getColmunsInfo:transactionDbObj:](SmacBaseDao.o) - libSmacTracking.a中的[SmacBaseDao getTableList](SmacBaseDao.o)“_ sqlite3_column_int”,引用自: - [SmacBaseDao getNumber: column:]在libSmacTracking.a(SmacBaseDao.o)“_ sqlite3_open”中,引用自: - [SmacBaseDao dbOpen]在libSmacTracking.a(SmacBaseDao.o)“_ sqlite3_exec”中,引用自: - [SmacBaseDao dbOpen] in libSmacTracking.a( SmacBaseDao.o) - [SmacBaseDao dbClose:]在libSmacTracking.a(SmacBaseDao.o)“_ OBJC_CLASS _ $ _ NSManagedObjectModel”中,引用自:libGoogleAnalyticsServices.a(GAICoreDataUtil.o)中的objc-class-ref“_sqlite3_prepare_v2”,引自: - [libcmacTracking.a中的[SmacUpdate updateDB](SmacUpdate) .o) - [SmacBaseDao dbOpen]在libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao execInsertQuery:transactionDbObj:isTmp:]在libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao getColmunsInfo:transactionDbObj:] in libSmacTracking.a(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:]在libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao execInsertQuery:transactionDbObj:isTmp:]中的libSmacTracking.a(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”,引用自: - [SmacBaseDao getString:column:]在libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao getDateString:column:]中的libSmacTracking.a(SmacBaseDao.o)“ sqlite3_finalize”,引用自: - [SmacUpdate updateDB] in libSmacTracking.a(SmacUpdate.o) - [SmacBaseDao libSmacTracking.a中的[dbcpen](SmacBaseDao.o) - libSmacTracking.a中的[SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:](SmacBaseDao.o) - libSmacTracking.a中的[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:](SmacBaseDao) .o) - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isT mp:]在libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao getColmunsInfo:transactionDbObj:]中的libSmacTracking.a(SmacBaseDao.o)“ OBJC_CLASS _ $ _ NSEntityDescription”,引用自:libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore . o)libGoogleAnalyticsServices.a(GAICoreDataUtil.o)中的objc-class-ref“OBJC_CLASS _ $ _ NSManagedObjectContext”,引用自:libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore.o)“ OBJC_CLASS _ $ _ NSPersistentStoreCoordinator”,引自:objc- libGoogleAnalyticsServices.a(GAIDataStore.o)中的class-ref“kSecReturnData”,引自: - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:] [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:],KeychainUtils.o“kSecMatchLimitOne”,引用自: - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]“kSecMatchLimit”,引用自: - Keyc中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] hainItemWrapper.o“ OBJC_CLASS _ $ _ NSFetchRequest”,引用自:libGoogleAnalyticsServices.a中的objc-class-ref(GAIDataStore.o)“NSOverwriteMergePolicy”,引自: - [GAIDataStore contextWithModel:URL:]在libGoogleAnalyticsServices.a(GAIDataStore.o)“ sqlite3_reset”中,引自: - [SmacBaseDao execInsertQuery:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o) - [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o)“ kSecClassGenericPassword”,引用自: - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] - [KeychainItemWrapper dictionaryToSecItemFormat:] in KeychainItemWrapper.o - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:] [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] in KeychainUtils obo中的.o [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:]“ OBJC_CLASS _ $ _ NSAttributeDescription”,引自:obj libGoogleAnalyticsServices.a(GAICoreDataUtil.o)中的c-class-ref“_kSecAttrService”,引用自:KeychainItil中的KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] Key中的KeychainUtils.o中的.o [KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o“_kSecAttrLabel”,引用自: - [KeychainItemWrapper KeychainItemWrapper.o中的KeyKinItemWrapper.o [KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] in KeychainUtils.o“_NSSQLiteStoreType”,引自: - [GAIDataStore coordinatorWithModel:URL:]在libGoogleAnalyticsServices.a中(GAIDataStore.o )“NSSQLiteErrorDomain”,引自: - [GAIDataStore performBlockAndWait:withError:]在libGoogleAnalyticsServices.a(GAIDataStore.o)“ sqlite3_bind_null”中,引用自: - [SmacBaseDao setSqlBi ndStatement:实体:colmunInfoList:emptyIsNull:]在libSmacTracking.a(SmacBaseDao.o) “_kSecClass”,从参考: - [KeychainItemWrapper initWithIdentifier:服务名:accessGroup:]在KeychainItemWrapper.o - [KeychainItemWrapper dictionaryToSecItemFormat:]在KeychainItemWrapper.o - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:] - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain] [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o中的[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error :] KeychainUtils.o中的KeychainUtils.o [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] ...“_kSecAttrGeneric”,引用自: - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:]“_kSecAttrAccount” ,引自: - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] [KeychainUtils getStoredValue:ser KeychainUtils.o中的keyName:accessGroup:errorDomain:error:] [KeychainUtils中的keychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] KeychainUtils中的KeychainUtils.o [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] . o“_kSecValueData”,引自: - KeychainItemWrapper.o中的 - [KeychainItemWrapper resetKeychainItem] - KeychainItemWrapper.o中的[KeychainItemWrapper dictionaryToSecItemFormat:] - KeychainItemWrapper.o中的[KeychainItemWrapper secItemFormatToDictionary:] [KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain :错误:]在KeychainUtils.o“_kSecAttrAccessGroup”中,引用自: - KeychainItemWrapper.o中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o中[KeychainUtils setValue: key:servicename:accessGroup:force:errorDomain:error:] in KeychainUtils.o [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] in Ke ychainUtils.o“SecItemUpdate”,引自: - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain] [KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] in KeychainUtils.o“ OBJC_CLASS _ $ _ SKProductsRequest”,引自:objc -Stlass-ref在AppStoreProcess.o“sqlite3_bind_text”中,引用自: - [SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:] in libSmacTracking.a(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”,引用自: - [SmacBaseDao dbClose:] in libSmacTracking.a(SmacBaseDao.o)“ SecItemAdd”,引用自: - KeychainItemWrapper.o中的[KeychainItemWrapper writeToKeychain] [KeychainUtils setValue:key:servicename:accessGroup:force:错误域:错误:]在KeychainUtils.o“_SecItemDelete”中,引用自: - KeychainItemWrapper.o中的[KeychainItemWrapper resetKeychainItem] [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] in KeychainUtils.o“_OBJC_CLASS _ $ _ SKPayment”,引用自:AppStoreProcess.o中的objc-class-ref“_kSecReturnAttributes”,引自: - Key中的[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] KeychainUtils.o中的ychainItemWrapper.o [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] [KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] in KeychainUtils.o“kSecAttrDescription”,引自: - [KeychainItemWrapper resetKeychainItem] in KeychainItemWrapper.o“ OBJC_CLASS _ $ _ SKPaymentQueue”,引用自:AppStoreProcess.o中的objc-class-ref ld:未找到架构armv7 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我已经阅读了一些关于"Undefined symbols for architecture armv7"的回答的问题,如this one,但顶部答案中建议的解决方案并没有将所需文件放入Xcode Project文件夹中 . 此外,在检查时,错误所寻找的库已在Build Phases的Link Binary With Libraries部分中正确添加 .

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

我也尝试在Unity Player设置中选择armv7或只用arm64来构建IL2CPP,但我仍然在Xcode中分别获得“armv7的未定义符号”或“arm64的未定义符号”Mach-O链接器错误 .

Software used: Unity 4.6.6,Xcode 6.1(将尝试升级到6.3)和iOS 8.1基础SDK

1 回答

  • 0

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

相关问题