2012-02-29 15 views
8

FMDatabase'i kullanmaya çalıştığımda sorun yaşıyorum.SQLite sarmalayıcıyı kullanmaya çalışırken hata FMDatabase

Eklediğim Postadölesan dosyalar:

FMDatabaseQueue 
FMDatabaseAdditions 
FMDatabase 
FMResultSet 
FMDatabasePool 

..ve de libsqlite3.dylib kütüphane ve ithal FMDatabase.h eklemiş, ama en kısa sürede bu hattı olarak:

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

bu hatayı alabilirsiniz ..Ben:

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

Ben de 4.0 arasında Dağıtım hedef gibi ayarlarını değiştirerek denedim - 5.0 ve yeni, temiz bir proje vb. Oluşturma.

Xcode Version 4.3 (4E109) ​​kullanıyorum.

Neyi yanlış yapıyorum? :)

// Stefan

+1

.h ve .m dosyalarını projenize eklediniz mi? – lawicko

+1

Evet, fmdb.m dışındaki tüm dosyaları src'den ekledim. –

cevap

16

, her şey derleyici iyiydi beslenen ama bir yürütülebilir içine hep birlikte derlenmiş nesne kodu paketlemek için zaman geldi bir kez başvurulan bir sınıf için uygulanmasını bulamadık kodda.

Xcode'daki proje kaynak listesine sürükleyerek .m dosyalarını "yapı aşamasına" otomatik olarak eklemelidir, ancak bunu yapıp bu hatayı alıyorsanız, orada olduklarını kontrol edin: Üst Üste - Proje ayarlarını almak için sol taraftaki kaynak listesindeki bir öğe, sonraki bölmedeki hedefi tıklatın, sonraki bölmesinde "Yapı Aşamaları" sütun başlığını tıklatın, ardından "Kaynak derleme" satırını genişletin. FM dosyaları orada değilse, listenin altındaki + düğmesine tıklayın ve bunları seçin. en davehayden cevabı üzerine Genişleyen

+0

Haklıydın, bu benim problemimi çözdü. Teşekkürler! –

+3

Bu, dosya eklerken "Hedeflere ekle" onay kutusunu işaretlemeyen Xcode 4.3 btw'deki hatadır. – valexa

+0

Rockin ', Xcode'ta devam edin. Not için teşekkürler - Yapım aşamasından ayrılan dosyalar için bir göz attığınızdan emin olacağım. – davehayden

1

sen onları kullandığınız yerde FMDB başlıklarını ithal ettiniz? Bir bağlayıcı hatasız anlamı bu

#import "FMDatabase.h" 
+0

Evet. Veritabanı değişkeni şöyle tanımlayabilirim: FMDatabase * db; ve çalışıyor. [FMDatabase databaseWithPath: @ "/ tmp/tmp.db"]; 'un unutmadığı anda çöküyor. –

2

...

Xcode Başlık ve kaynak dosyaları bir klasör eklerseniz, .m dosyaları Derleme Kaynakları listeye eklenmez. Genelde burada yakalanırım çünkü proje klasörümde duyarlı bir klasör yapısını korumak istiyorum. Bunu aşmak için dosyaları elimden geldiğim proje klasörüme el ile kopyalarım. Daha sonra Xcode'da, her bir üstbilgi ve kaynak dosyayı kopyalamaksızın projeme ekleyin (Dosya> Dosya Ekle ... seçeneğini kullanarak). Proje Gezgini'nde tüm gevşek dosyaları seçin, sağ tıklayın ve bir klasörden seçim yapın.

Biraz geç ama umarım bu bir başkasına yardım eder.

İlgili konular