2012-08-11 14 views
13

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 :)

+0

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

+0

Hej, próbowałem go z symulatorem iphone i ipad, a także na moim urządzeniu, ale błąd pozostaje taki sam. – Blade

+0

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

Odpowiedz

19

myślę, że brakuje tej linii

NSString * const FBSessionStateChangedNotification = @ „FBSessionStateChangedNotification”;

i dodanie odniesienia do -lsqlite3.0

Zobacz https://developers.facebook.com/docs/getting-started/getting-started-with-the-ios-sdk/#project

+0

Dziękuję, naprawdę zapomniałem o referencji. Silly me: D – Blade

+0

Dziękuję ..! to naprawdę bardzo mi pomaga –

+2

Otrzymasz błędy linkera (duplikaty symboli dla mnie z SDK 3.0), jeśli dodasz 'NSString * const FBSessionStateChangedNotification = @" FBSessionStateChangedNotification ";', ale dziękuję za wskazanie sqlite3.0! Całkowicie pominięte Ta sekcja w ustawieniach projektu: – cbowns

4

Myślę, że brakuje tego

Goto Project-> BuildPhase-> Link Binary-Add -> - lsqlite3.0

1

Tak, znalazłem rozwiązanie: libsqlite3.dylib, którego użyłem skompilowane dla armv6 nie 7, więc pobierz plik Xcode dmg (więcej niż 4.2) i wypakuj z niego lib.

Powiązane problemy