如何使用Code :: Blocks在C ++程序中使用SQLite?

时间:2012-07-20 06:54:12

标签: c++ sqlite codeblocks

我是Code :: Blocks和SQLite的初学者,并且对C ++有一些基础知识。我目前正在使用Ubuntu 11.04。

我已下载SQLite Amalgamation here。当我解压缩zip文件时,其中有四个文件:shell.csqlite3.csqlite3.hsqlite3ext.h。如果我只是将这些文件添加到(例如)控制台项目中,则会发出错误:下载的sqlite的.c都有自己的主要功能。从项目中删除它们,错误消失了,我可以调用#include "sqlite3.h"。我正在尝试关注this,并尝试了here中的前两行代码,并发出错误:undefined reference to sqlite3_open

我认为直接将这些.h直接添加到控制台项目中并不是使用它的正确方法,但我不确定。

我应该如何使用它们?我该怎么做才能将它们用于我的C ++程序?

非常感谢任何帮助。 :)

编辑:我还尝试按照this创建这些sqlite文件的.a文件。当我尝试它时,它会发出错误:cannot find -lsqlite

3 个答案:

答案 0 :(得分:5)

我明白了!虽然我做了一些导致问题的事情。我忘了删除我在Project>中添加的.a文件。构建选项>链接器设置较早,这导致了问题..

以下是我添加SQLite的步骤:(对于可能存在相同问题的那些)

  1. 将从SQLite Amalgamation中提取的文件复制到项目目录中。

  2. 添加sqlite文件(项目>添加文件)除了shell.c(它是导致多功能错误的那个)

  3. 编译它(是的,一个简单的Ctrl + f9)。

  4. 这里有错误:undefined reference to pthread_mutexattr....。通过转到Project>修复这些问题。构建选项>突出显示左上角DebugRelease上方的“项目名称”>链接器设置,并将"-lpthread"(不带引号)添加到Other linker options:

  5. 发现了一些错误:undefined reference to dlopen, dlerror....。在之前添加的'“-lpthread”'正下方添加'“-ldl”'。

  6. 完成:)

答案 1 :(得分:3)

作为一名初学者,我没有为Windows找到完整的答案,而在开始时理解所有内容都非常痛苦。所以这对我有用。

  1. 下载SQlite Amalgamation文件。
  2. Open Code :: Blocks - >新项目 - >选择静态库
  3. 解压缩已下载的文件,并将文件夹/内容复制到新项目目录中。将所有文件添加到项目中并构建项目
  4. 您将在bin / Debug或bin / Release目录中找到 ProjectName .a文件。将该文件复制到您的实际SQlite项目目录。
  5. 转到Code :: Blocks Project->构建选项。选择'链接器设置'选项卡并添加.a文件的路径。不要关闭它!!!
  6. 在搜索目录中'选项卡,选择'编译器'选项卡,添加Amalgamation头文件的路径,或将头文件复制到您的目录(您可以将头文件添加到您的项目中)和'链接器'选项卡添加.a文件的路径
  7. 现在编译!!!希望这将运行
  8. 就是这样,我希望它能为另一个菜鸟节省一些搜索时间

答案 2 :(得分:2)

您需要首先编译sqlite代码,然后只需#include "sqlite3.h"编译到您需要它的项目中。

<强> UPD: 试试这个:

从sqlite网站下载this package并将其解压缩到一个名为“sqlite”的文件夹中。打开终端,进入此文件夹。在里面,运行

./configure
sudo make 
sudo make install

看看会发生什么。它应该自动构建。请参阅存档中的README文件。