0

Unity 4.6.6 で Xcode プロジェクトをビルドしていますが、IL2CPP で問題が発生しています。ビルド時に Player 設定 (armv7 と arm64 の両方を含めるため) でユニバーサル アーキテクチャを選択し、それが生成する Xcode プロジェクトで、ビルド時に次の Mach-O リンカー エラーが発生します。

アーキテクチャ armv7 の未定義シンボル: "_sqlite3_bind_int"、参照先: -[SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:] libSmacTracking.a(SmacBaseDao.o) 内の "_sqlite3_errmsg"、参照元: -[SmacBaseDao execSelectQuery:condition:colmun: libSmacTracking.a(SmacBaseDao.o) の transactionDbObj:isTmp:] - libSmacTracking.a(SmacBaseDao.o) の [SmacBaseDao execInsertQuery:transactionDbObj:isTmp:] - libSmacTracking の [SmacBaseDao execUpdateQuery:condition:emptyIsNull:transactionDbObj:isTmp:]。 a(SmacBaseDao.o) - libSmacTracking.a(SmacBaseDao.o) の [SmacBaseDao getColmunsInfo:transactionDbObj:] - libSmacTracking.a(SmacBaseDao.o) の [SmacBaseDao getTableList] "_sqlite3_column_int"、次から参照: -[SmacBaseDao getNumber:column :] libSmacTracking.a(SmacBaseDao.o) の「_sqlite3_open」から参照: -[SmacBaseDao dbOpen] libSmacTracking.a(SmacBaseDao.o) の「_sqlite3_exec」から参照: -libSmacTracking.a(SmacBaseDao.o) の [SmacBaseDao dbOpen] o) -[SmacBaseDao dbClos​​e:] libSmacTracking.a(SmacBaseDao.o) の「_OBJC_CLASS_$_NSManagedObjectModel」、次から参照: libGoogleAnalyticsServices.a(GAICoreDataUtil.o) の「_sqlite3_prepare_v2」の objc-class-ref、次から参照: -[SmacUpdate updateDB] in libSmacTracking.a(SmacUpdate.o) -[SmacBaseDao dbOpen] in 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:] libSmacTracking.a(SmacBaseDao.o)内 -[SmacBaseDao getColmunsInfo:transactionDbObj:] libSmacTracking.a(SmacBaseDao.o)内-libSmacTracking.a(SmacBaseDao.o) 内の [SmacBaseDao getTableList] ... "_sqlite3_step"、参照先: - libSmacTracking.a(SmacUpdate.o) 内の [SmacBaseDao dbOpen] - libSmacTracking.a(SmacBaseDao.o) 内の[SmacBaseDao dbOpen] 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:] libSmacTracking.a(SmacBaseDao.o) -[SmacBaseDao getColmunsInfo:transactionDbObj:] in libSmacTracking.a(SmacBaseDao.o) -[SmacBaseDao getTableList] in libSmacTracking.a(SmacBaseDao.o) ... "_sqlite3_column_text"、次から参照: -[SmacBaseDao getString:column: ] in libSmacTracking.a(SmacBaseDao.o) -[SmacBaseDao getDateString:column:] in libSmacTracking.a(SmacBaseDao.o) "_sqlite3_finalize"、次から参照: -[SmacUpdate updateDB] in libSmacTracking.a(SmacUpdate.o) -[ SmacBaseDao dbOpen] in libSmacTracking.a(SmacBaseDao.o) -[SmacBaseDao execSelectQuery:condition:colmun:transactionDbObj:isTmp:] libSmacTracking.a(SmacBaseDao.o) -[SmacBaseDao execInsertQuery:transactionDbObj:isTmp:] libSmacTracking.a( SmacBaseDao.o) -[SmacBaseDao execUpdateQuery:条件:emptyIsNull:transactionDbObj:isTmp:] in libSmacTracking.a(SmacBaseDao.o) -[SmacBaseDao getColmunsInfo:transactionDbObj:] in 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(GAIDataStore.o) の objc-class-ref、"_OBJC_CLASS_$_NSPersistentStoreCoordinator"、参照先libGoogleAnalyticsServices.a(GAIDataStore.o) の objc-class-ref "_kSecReturnData"、次から参照: -[KeychainItemWrapper secItemFormatToDictionary:] in KeychainItemWrapper.o +[KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o の「_kSecMatchLimitOne」から参照: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] KeychainItemWrapper.o の「_kSecMatchLimit」から参照: -[KeychainItemWrapper の initWithIdentifier:serviceName:accessGroup:]。 o 「_OBJC_CLASS_$_NSFetchRequest」から参照: libGoogleAnalyticsServices.a(GAIDataStore.o) の objc-class-ref 「_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:]-[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] in KeychainItemWrapper.o -[KeychainItemWrapper dictionaryToSecItemFormat:] in KeychainItemWrapper.o -[KeychainItemWrapper secItemFormatToDictionary:] KeychainItemWrapper. +[KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o +[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] KeychainUtils.o +[KeychainUtils deleteValue:serviceName:accessGroup:] errorDomain:error:] in KeychainUtils.o "_OBJC_CLASS_$_NSAttributeDescription", 参照先: libGoogleAnalyticsServices.a(GAICoreDataUtil.o) の objc-class-ref "_kSecAttrService",参照元: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] (KeychainItemWrapper.o 内) +[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:] KeychainUtils.o "_kSecAttrLabel" 内、次から参照: -[KeychainItemWrapper resetKeychainItem] in KeychainItemWrapper.o +[KeychainUtils setValue:key:servicename: -[GAIDataStore coordinatorWithModel:URL:] libGoogleAnalyticsServices.a(GAIDataStore.o) の「_NSSQLiteErrorDomain」から参照:-[GAIDataStore performBlockAndWait:withError:] libGoogleAnalyticsServices.a(GAIDataStore.o) の「_sqlite3_bind_null」、参照元: from: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] in KeychainItemWrapper.o -[KeychainItemWrapper dictionaryToSecItemFormat:] in KeychainItemWrapper.o -[KeychainItemWrapper secItemFormatToDictionary:] in KeychainItemWrapper.o -[KeychainItemWrapper writeToKeychain] in KeychainItemWrapper.o +[KeychainUtils getStoredValue: keychainUtils.o の serviceName:accessGroup:errorDomain:error:] + KeychainUtils の [KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:]。o +[KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o 内 ... "_kSecAttrGeneric"、次から参照: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] 内 KeychainItemWrapper.o "_kSecAttrAccount"、次から参照: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] KeychainItemWrapper.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:] KeychainUtils.o の「_kSecValueData」、参照先: -KeychainItemWrapper の [KeychainItemWrapper resetKeychainItem]。o -[KeychainItemWrapper dictionaryToSecItemFormat:] in KeychainItemWrapper.o -[KeychainItemWrapper secItemFormatToDictionary:] in KeychainItemWrapper.o +[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] KeychainUtils.o の「_kSecAttrAccessGroup」、以下から参照: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] KeychainItemWrapper.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:] KeychainUtils.o "_SecItemUpdate" 内、次から参照: -[KeychainItemWrapper writeToKeychain] KeychainItemWrapper 内。o +[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] KeychainUtils.o の「_OBJC_CLASS_$_SKProductsRequest」、次から参照: AppStoreProcess.o の objc-class-ref 「_sqlite3_bind_text」、次から参照: -[ SmacBaseDao setSqlBindStatement:entity:colmunInfoList:emptyIsNull:] libSmacTracking.a(SmacBaseDao.o) の「_SecItemCopyMatching」、次から参照: -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] KeychainItemWrapper.o の [KeychainItemWrapper secItemFormatToDictionary:] - KeychainItemWrapper.o の [KeychainItemWrapper writeToKeychain] + KeychainUtils.o の [KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] "_sqlite3_close"、以下から参照:-[SmacBaseDao dbClos​​e:] in libSmacTracking.a(SmacBaseDao.o) "_SecItemAdd"、次から参照: -[KeychainItemWrapper writeToKeychain] in KeychainItemWrapper.o +[KeychainUtils setValue:key:servicename:accessGroup:force:errorDomain:error:] KeychainUtils.o "_SecItemDelete" から参照: -[KeychainItemWrapper resetKeychainItem] in KeychainItemWrapper.o +[KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o で "_OBJC_CLASS_$_SKPayment"、参照元: objc-class- -[KeychainItemWrapper initWithIdentifier:serviceName:accessGroup:] in KeychainItemWrapper.o +[KeychainUtils getStoredValue:serviceName:accessGroup:errorDomain:error:] から参照されます。] KeychainUtils.o の +[KeychainUtils deleteValue:serviceName:accessGroup:errorDomain:error:] KeychainUtils.o の「_kSecAttrDescription」、次から参照: -[KeychainItemWrapper resetKeychainItem] KeychainItemWrapper.o の「_OBJC_CLASS_$_SKPaymentQueue」、次から参照: objc- AppStoreProcess.o ld の class-ref: アーキテクチャ armv7 のシンボルが見つかりませんでした。clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (-v を使用して呼び出しを確認してください)アーキテクチャー armv7 clang のシンボルが見つかりません: エラー: リンカーコマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)アーキテクチャー armv7 clang のシンボルが見つかりません: エラー: リンカーコマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)

このような「アーキテクチャarmv7の未定義シンボル」に関する回答付きの質問をいくつか読みましたが、私の場合、必要なファイルをXcodeプロジェクトフォルダーに配置するのはUnityであるため、一番上の回答で提案されている解決策は実際には適用されません. また、検査すると、エラーが探していたライブラリが、ビルド フェーズの[Link Binary With Libraries]セクションに適切に追加されました。

私が何か間違ったことをしている場合、誰かが私を助けたり教えたりできますか?

IL2CPP でビルドするために、Unity Player 設定で armv7 または arm64 のみを選択しようとしましたが、Xcode で「armv7 の未定義シンボル」または「arm64 の未定義シンボル」Mach-O リンカー エラーがそれぞれ発生します。

使用ソフトウェア: Unity 4.6.6、Xcode 6.1(6.3にアップグレードしてみる)、iOS 8.1ベースSDK

4

1 に答える 1