Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为iPhone应用程序编译自定义SQLite_Iphone_Xcode_Sqlite - Fatal编程技术网

为iPhone应用程序编译自定义SQLite

为iPhone应用程序编译自定义SQLite,iphone,xcode,sqlite,Iphone,Xcode,Sqlite,我正在尝试将源代码编译到我的iPhone应用程序中(以使我能够访问在iPhone编译版本的二进制文件中不可用的全文搜索功能) 当我将sqlite3.c和sqlite3.h添加到一个普通的Carbon c应用程序模板中时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在iPhone项目中编译它时,我遇到了一些与缺少函数声明相关的错误。我可以通过显式地包含ctype.h来解决这些问题,但这有点奇怪 但是,即使在构建之后,链接也会失败,出现以下错误: "_sqlite3_version",

我正在尝试将源代码编译到我的iPhone应用程序中(以使我能够访问在iPhone编译版本的二进制文件中不可用的全文搜索功能)

当我将sqlite3.c和sqlite3.h添加到一个普通的Carbon c应用程序模板中时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在iPhone项目中编译它时,我遇到了一些与缺少函数声明相关的错误。我可以通过显式地包含ctype.h来解决这些问题,但这有点奇怪

但是,即使在构建之后,链接也会失败,出现以下错误:

"_sqlite3_version", referenced from:
_sqlite3_version$non_lazy_ptr in sqlite3.0
symbol(s) not found
collect2: ld returned 1 exit status

我假设这是iPhone应用程序的构建设置中的某个内容,但我无法理解。有什么想法吗?

这种类型的错误通常意味着缺少框架

  • 右键或控件单击项目的Frameworks文件夹
  • 选择添加>现有框架
  • 转到:Macintosh HD>Developer>platform>iPhoneOS.platform>Developer>SDK>iPhoneOS2.2sdk>usr>lib并选择libsqlite3.dylib
  • 重建项目

  • 我想这应该可以解决问题。您可能需要添加一个类似的库,以便在iPhone模拟器上运行。

    尝试以下步骤:

  • xcode菜单->项目->新目标->静态库->目标名称:SQLite
  • 将SQLite合并源放到项目中,现在可以选择目标,选择SQLite
  • xcode菜单->项目->编辑活动目标->选项卡常规->直接依赖->添加SQLite
  • 选项卡常规->链接库->添加SQLite

  • 我通过合并成功地做到了这一点,并将其直接放入我的项目中,而不必执行catlan建议的链接(我并不是说这是一个坏主意,只是在主项目中可以这样做)


    我不需要编辑任何内容(除了为文本搜索添加必要的FTS定义)并且编译时没有错误。检查您的构建设置,确保“-sqlite3”不在其他链接标志中。

    为什么要在iPhone部署中使用Carbon C应用程序模板?我没有。我只是想看看它是否会在任何地方编译——也就是说,如果iPhone项目的设置导致了问题——所以我认为基本的Carbon C模板我是最不可能干预的。(顺便说一句,我是对的,因为它编译得很好)啊,好吧,我看错了。我也在一个iPhone项目上使用sqlite3合并,我没有遇到任何问题,没有编译。这就是我发现的所有在线参考都在说的——只要输入这两个文件,你就可以了。唉……但如果我这样做,它就会链接到内置的SQLite库,rig然而,我想使用我的自定义编译版本(因为它具有内置版本所没有的特性)我不知道你能做到。我觉得苹果公司不会喜欢它。我可能错了though@bdotdub-你绝对可以做到-苹果为什么会在意?他并不是在试图更换系统版本,只是在他的应用程序使用的新版本中编译。这是一个相当标准的做法。为什么他希望SQLite的iOS版本是w嗯?我最后做了一个变化,按照这里的说明:做得很好。@makdad,这个链接似乎断了