2012-02-29 6 views
8

Tengo problemas cuando trato de usar FMDatabase.Error al intentar utilizar el contenedor SQLite Base de datos FM

he añadido archivos theese:

FMDatabaseQueue 
FMDatabaseAdditions 
FMDatabase 
FMResultSet 
FMDatabasePool 

..y También he añadido la biblioteca libsqlite3.dylib y FMDatabase.h importado, pero tan pronto como me descomentar esta línea:

FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; 

..I sale este error:

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_FMDatabase", referenced from: 
     objc-class-ref in DBWrapper.o 
ld: symbol(s) not found for architecture i386 

también he intentado cambiar la configuración como destino del despliegue de entre 4,0 - 5.0 y crear un nuevo proyecto limpio, etc.

Estoy usando Xcode Version 4.3 (4E109).

¿Qué estoy haciendo mal? :)

// Stefan

+1

¿Ha agregado archivos .h y .m a su proyecto? – lawicko

+1

Sí, he agregado todos los archivos de src excepto fmdb.m. –

Respuesta

16

Eso es un enlazador de error intencionado, todo lo que alimenta el compilador estaba bien, pero una vez que llegó el momento de empaquetar todo el código objeto compilado juntos en un archivo ejecutable que no pudo encontrar la puesta en práctica de una clase que se hace referencia en el código.

Al arrastrar archivos .m a la lista de fuentes del proyecto en Xcode, los debería agregar automáticamente a la "fase de compilación", pero si lo hizo y obtiene este error, verifique que estén allí: haga clic en la parte superior - nivel de elemento en la lista fuente izquierda para obtener la configuración del proyecto, haga clic en el objetivo en el siguiente panel, haga clic en el encabezado de columna "Crear fases" en el siguiente panel, luego expanda la fila "Compilar fuentes". Si los archivos de FM no están allí, haga clic en el botón + en la parte inferior de la lista y selecciónelos.

+0

Tenías razón, esto resolvió mi problema. ¡Gracias! –

+3

Este es un error en Xcode 4.3 btw que hace que la casilla de verificación "Agregar a destinos" no esté marcada al agregar archivos. – valexa

+0

Keep on rockin ', Xcode. Gracias por la nota. Me aseguraré de estar atento a los archivos que abandonan la fase de compilación. – davehayden

1

¿Ha importado los encabezados FMDB en el lugar que está utilizando ellos?

#import "FMDatabase.h" 
+0

Sí. Puedo definir mi variable de base de datos de esta manera: FMDatabase * db; y funciona. Se bloquea tan pronto como descomente [base de datos de FMDataWithPath: @ "/ tmp/tmp.db"] ;. –

2

Ampliando la respuesta de davehayden ...

Si añade una carpeta de archivos de cabecera y de origen en Xcode, los archivos .m no se añaden a la lista de Fuentes de compilación. Normalmente me pillan porque quiero conservar una estructura de carpeta sensible en mi carpeta de proyecto. Para evitar esto, manualmente copio los archivos en la carpeta de mi proyecto donde los quiero. Luego, en Xcode, agregue cada encabezado individual y archivo de origen a mi proyecto sin copiar (usando Archivo> Agregar archivos a ...). Seleccione todos los archivos sueltos en Project Navigator, haga clic con el botón derecho y seleccione una carpeta desde la selección.

Un poco tarde, pero espero que esto ayude a otra persona.

Cuestiones relacionadas