尝试使用SQLite包装器FMDatabase时出错

Ste*_*erg 9 sqlite iphone fmdb ios

我尝试使用FMDatabase时遇到了麻烦.

我添加了theese文件:

FMDatabaseQueue
FMDatabaseAdditions
FMDatabase
FMResultSet
FMDatabasePool
Run Code Online (Sandbox Code Playgroud)

..我还添加了libsqlite3.dylib库并导入了FMDatabase.h,但是一旦我取消注释这一行:

FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"];
Run Code Online (Sandbox Code Playgroud)

..我得到这个错误:

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

我也尝试更改4.0 - 5.0之间的部署目标设置和创建一个新的,干净的项目等.

我正在使用Xcode版本4.3(4E109).

我究竟做错了什么?:)

// Stefan

dav*_*den 17

这是一个链接器错误 - 这意味着,您为编译器提供的所有内容都很好但是一旦将所有编译的目标代码打包到一个可执行文件中,它就无法找到代码中引用的类的实现.

将.m文件拖放到Xcode中的项目源列表中应自动将它们添加到"构建阶段",但如果您这样做并且您收到此错误,请检查它们是否在那里:单击顶级项目左侧源列表以获得该项目的设置,单击目标在接下来的窗格中,单击"生成阶段"列标题在接下来的窗格,然后展开"编译来源"行.如果FM文件不在那里,请单击列表底部的+按钮并选择它们.

  • 这是Xcode 4.3 btw中的错误,它使添加文件时未选中"添加到目标"复选框. (3认同)