Próbuję zaimplementować Facebooka w jednej z moich aplikacji i dlatego podążałem za oficjalnym tutorialem na Facebooku na Hackbook. https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/FacebookSDK 3.0 - Błąd Apple Mach-O Linker
Zaimplementowałem wszystko zgodnie z opisem i nie dostaję żadnych błędów ani ostrzeżeń. Jednak kiedy próbuję zbudować aplikację, otrzymuję 17 błędów łącznika Mach-O.
Undefined symbols for architecture i386:
"_FBSessionStateChangedNotification", referenced from:
-[ForeverMainViewController sessionStateChanged:state:error:] in ForeverMainViewController.o
"_sqlite3_bind_double", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_bind_int", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_bind_text", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _removeEntryFromDatabaseForKey:] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_close", referenced from:
___23-[FBCacheIndex dealloc]_block_invoke_0 in FacebookSDK(FBCacheIndex.o)
"_sqlite3_column_double", referenced from:
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_column_int", referenced from:
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _fetchCurrentDiskUsage] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_column_text", referenced from:
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
"_sqlite3_errmsg", referenced from:
_releaseStatement in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
_initializeStatement in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _fetchCurrentDiskUsage] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _removeEntryFromDatabaseForKey:] in FacebookSDK(FBCacheIndex.o)
...
"_sqlite3_exec", referenced from:
___36-[FBCacheIndex initWithCacheFolder:]_block_invoke_0 in FacebookSDK(FBCacheIndex.o)
"_sqlite3_finalize", referenced from:
_releaseStatement in FacebookSDK(FBCacheIndex.o)
"_sqlite3_open_v2", referenced from:
___36-[FBCacheIndex initWithCacheFolder:]_block_invoke_0 in FacebookSDK(FBCacheIndex.o)
"_sqlite3_prepare_v2", referenced from:
_initializeStatement in FacebookSDK(FBCacheIndex.o)
"_sqlite3_reset", referenced from:
_initializeStatement in FacebookSDK(FBCacheIndex.o)
"_sqlite3_step", referenced from:
-[FBCacheIndex _updateEntryInDatabaseForKey:entry:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _writeEntryInDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _readEntryFromDatabase:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _fetchCurrentDiskUsage] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _removeEntryFromDatabaseForKey:] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _dropTrimmingTable] in FacebookSDK(FBCacheIndex.o)
-[FBCacheIndex _trimDatabase] in FacebookSDK(FBCacheIndex.o)
...
ld: symbol(s) not found for architecture i386
Po reimplementacji, wyczyszczeniu aplikacji, upewnieniu się, że wszystko tam jest, nie mam pomysłów. Zaimplementowałem go również w innej aplikacji, ale znowu dobrze. Podane próbki z Facebooka działają jednak zgodnie z przeznaczeniem. Zrobiłem różne napiwki w Internecie, ale żaden z nich nie zadziałał tak daleko. Może ktoś tutaj wie coś o API i ma dobrą końcówkę dla mnie :)
Czy próbowałeś także zbudować urządzenie (iPhone/iPad, ...)? Czy są jakieś różne komunikaty o błędach podczas próby? Teraz wygląda to tak, jakbyś próbował połączyć kompilację symulatora z biblioteką urządzeń. – Till
Hej, próbowałem go z symulatorem iphone i ipad, a także na moim urządzeniu, ale błąd pozostaje taki sam. – Blade
OK, a następnie ... czy jesteś pewien, że postępowałeś zgodnie z instrukcjami dotyczącymi łączenia z SDK (które powinny być zawarte w tej strukturze)? – Till