2012-08-11 12 views
13

Estoy tratando de implementar Facebook en una de mis aplicaciones y, por lo tanto, seguí el tutorial oficial de Facebook en Hackbook. https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/FacebookSDK 3.0 - Apple Mach-O Linker Error

Implementé todo como se describe y no recibo ningún error o advertencia. Sin embargo, cuando intento construir la aplicación, obtengo 17 errores de enlazador 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 

Después de reimplementar, la limpieza de la aplicación, asegurándose de que todo estaba allí, estoy fuera de ideas. También lo implementé en otra aplicación, pero bueno los errores otra vez. Las muestras dadas de Facebook sin embargo funcionan según lo previsto. Hice varios tips en Internet, pero ninguno de ellos funcionó hasta ahora. Tal vez alguien aquí sabe algo acerca de la API y tenga un buen consejo para mí :)

+0

¿Has probado a construir para el dispositivo (iPhone/iPad, ..) también? ¿Hay diferentes mensajes de error al intentar eso? En este momento, parece un poco como si intentara vincular una construcción de simulador con una biblioteca de dispositivo. – Till

+0

Oye, lo probé con el simulador de iphone y ipad y también en mi dispositivo, pero el error sigue siendo el mismo. – Blade

+0

Ok, entonces ... ¿está seguro de haber seguido las instrucciones sobre cómo enlazar con el SDK (que debería incluirse en ese marco)? – Till

Respuesta

19

Creo que se echa en falta esta línea

NSString * const FBSessionStateChangedNotification = @ "FBSessionStateChangedNotification";

y añadiendo referencia a -lsqlite3.0

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

+0

Gracias, realmente olvidé la referencia. Tonto de mí: D – Blade

+0

Gracias ..! esto realmente me ayuda mucho –

+2

Obtendrás errores del enlazador (símbolos duplicados para mí con el SDK 3.0) si agregas 'NSString * const FBSessionStateChangedNotification = @" FBSessionStateChangedNotification ";', ¡pero gracias por señalar a sqlite3.0! Totalmente errado esa sección en la configuración del proyecto. – cbowns

4

Creo que su faltan este

Goto Proyecto-> BuildPhase-> Enlace binario Añadir -> - lsqlite3.0

1

Sí, encontré la Solución: libsqlite3.dylib que utilicé compilada para armv6 no 7, por lo que descarga el archivo Xcode dmg (más de 4.2) y extrae la lib de él.

Cuestiones relacionadas