2012-08-11 4 views
13

내 앱 중 하나에 Facebook을 구현하려고하고 있으므로 Hackbook에 대한 공식 Facebook 자습서를 따랐습니다. https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/FacebookSDK 3.0 - Apple Mach-O Linker 오류

설명대로 모든 것을 구현했지만 오류나 경고가 표시되지 않습니다. 그러나 응용 프로그램을 만들려고하면 17 Mach-O Linker 오류가 발생합니다.

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 

앱을 다시 구현하고 앱을 청소 한 후 모든 것이 있는지 확인한 후 아이디어가 없습니다. 또한 다른 앱에서 구현했지만 오류는 다시 발생했습니다. 그러나 주어진 페이스 북 샘플은 의도 한대로 작동합니다. 나는 인터넷에서 다양한 tipp를했지만, 지금까지 아무도 일하지 않았다. 어쩌면 누군가가 여기에 API에 대해 뭔가를 알고 나를 위해 좋은 팁 :

+0

기기 (iPhone/iPad, ..) 용 건물을 사용해 보았습니까? 시도 할 때 다른 오류 메시지가 있습니까? 지금은 마치 시뮬레이터 빌드를 디바이스 라이브러리에 링크하려고하는 것처럼 보입니다. – Till

+0

이봐, 나는 아이폰과 ipad 시뮬레이터와 내 장치에서도 시도했지만 오류는 그대로 유지된다. – Blade

+0

좋아요, 그럼 ... (해당 프레임 워크에 포함되어야하는) SDK와의 연결에 대한 지침을 따르셨습니까? – Till

답변

19

난 당신이 줄

는 NSString *의 CONST FBSessionStateChangedNotification = @ "FBSessionStateChangedNotification"를 누락 생각을 가지고;

및 -lsqlite3.0

에 추가 참조 당신이

고토 프로젝트 -> BuildPhase-> 링크 이진 - 추가 누락 내가 생각 https://developers.facebook.com/docs/getting-started/getting-started-with-the-ios-sdk/#project

+0

감사합니다. 실제로 참조를 잊어 버렸습니다. 어리석은 나를 : D – Blade

+0

고맙습니다 ..! 이게 정말 도움이 되네. –

+2

'NSString * const FBSessionStateChangedNotification = @ ""FBSessionStateChangedNotification ";'을 추가하면 링커 오류 (3.0 SDK와 함께 나를 위해 심볼이 중복된다.)를 얻을 수 있지만 sqlite3.0을 가리켜 주셔서 감사합니다! – cbowns

1

예, 해결책을 찾았습니다. libsqlite3.dylib은 armv6이 아닌 7 용으로 컴파일 된 것이므로 Xcode dmg 파일 (4.2 이상)을 다운로드하고 lib에서 압축을 풉니 다.

관련 문제