为iPhone应用程序编译自定义SQLite
我正在尝试将源代码编译到我的iPhone应用程序中(以使我能够访问在iPhone编译版本的二进制文件中不可用的全文搜索功能) 当我将sqlite3.c和sqlite3.h添加到一个普通的Carbon c应用程序模板中时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在iPhone项目中编译它时,我遇到了一些与缺少函数声明相关的错误。我可以通过显式地包含ctype.h来解决这些问题,但这有点奇怪 但是,即使在构建之后,链接也会失败,出现以下错误:为iPhone应用程序编译自定义SQLite,iphone,xcode,sqlite,Iphone,Xcode,Sqlite,我正在尝试将源代码编译到我的iPhone应用程序中(以使我能够访问在iPhone编译版本的二进制文件中不可用的全文搜索功能) 当我将sqlite3.c和sqlite3.h添加到一个普通的Carbon c应用程序模板中时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在iPhone项目中编译它时,我遇到了一些与缺少函数声明相关的错误。我可以通过显式地包含ctype.h来解决这些问题,但这有点奇怪 但是,即使在构建之后,链接也会失败,出现以下错误: "_sqlite3_version",
"_sqlite3_version", referenced from:
_sqlite3_version$non_lazy_ptr in sqlite3.0
symbol(s) not found
collect2: ld returned 1 exit status
我假设这是iPhone应用程序的构建设置中的某个内容,但我无法理解。有什么想法吗?这种类型的错误通常意味着缺少框架
我想这应该可以解决问题。您可能需要添加一个类似的库,以便在iPhone模拟器上运行。尝试以下步骤:
我通过合并成功地做到了这一点,并将其直接放入我的项目中,而不必执行catlan建议的链接(我并不是说这是一个坏主意,只是在主项目中可以这样做)
我不需要编辑任何内容(除了为文本搜索添加必要的FTS定义)并且编译时没有错误。检查您的构建设置,确保“-sqlite3”不在其他链接标志中。为什么要在iPhone部署中使用Carbon C应用程序模板?我没有。我只是想看看它是否会在任何地方编译——也就是说,如果iPhone项目的设置导致了问题——所以我认为基本的Carbon C模板我是最不可能干预的。(顺便说一句,我是对的,因为它编译得很好)啊,好吧,我看错了。我也在一个iPhone项目上使用sqlite3合并,我没有遇到任何问题,没有编译。这就是我发现的所有在线参考都在说的——只要输入这两个文件,你就可以了。唉……但如果我这样做,它就会链接到内置的SQLite库,rig然而,我想使用我的自定义编译版本(因为它具有内置版本所没有的特性)我不知道你能做到。我觉得苹果公司不会喜欢它。我可能错了though@bdotdub-你绝对可以做到-苹果为什么会在意?他并不是在试图更换系统版本,只是在他的应用程序使用的新版本中编译。这是一个相当标准的做法。为什么他希望SQLite的iOS版本是w嗯?我最后做了一个变化,按照这里的说明:做得很好。@makdad,这个链接似乎断了