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

3
我是一个完全的Code::Blocks和SQLite初学者,对C++有一些基础知识。我目前正在使用Ubuntu 11.04。
我已经下载了SQLite Amalgamation 这里。当我解压缩zip文件时,里面有四个文件:shell.csqlite3.csqlite3.hsqlite3ext.h。如果我只是将这些文件添加到一个(例如)控制台项目中,它会出现错误:下载的sqlite中的每个.c都有自己的main函数。将其从项目中删除后,错误消失了,我可以调用#include "sqlite3.h"。我试图按照这里的步骤进行操作,并尝试了这里中的前两行代码,但它会出现错误:undefined reference to sqlite3_open
我认为直接将这些.h文件添加到控制台项目中并不是使用它们的正确方式,尽管我不确定。
我应该如何使用它们?我应该怎么做才能在我的C++程序中使用它们?
非常感谢任何帮助。 :)
编辑:我还尝试通过this创建那些sqlite文件的.a文件。当我尝试时,它会输出一个错误:cannot find -lsqlite
3个回答

5

我明白了!尽管我有一些做法导致了问题...我忘记在“项目”>“构建选项”>“链接器设置”中删除我添加的“.a”文件,这引起了问题。

以下是我添加SQLite的步骤(供那些可能遇到同样问题的人参考):

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

  2. 添加sqlite文件(项目>添加文件),EXCEPT shell.c(它会导致多函数错误)

  3. 编译(简单的Ctrl + f9)。

  4. 出现以下错误:undefined reference to pthread_mutexattr....。 方法是进入“项目”>“构建选项”>高亮显示左上角“Debug”和“Release”上面的“项目名称”>链接器设置,将 "-lpthread" (不包括引号)添加到“其他链接器选项:”。

  5. 找到更多错误:undefined reference to dlopen, dlerror....。 在之前添加的“-lpthread”下方添加“"-ldl"”即可。

完成 :)


4

作为初学者,我没有找到关于Windows的完整答案,在理解所有内容时很痛苦。以下是对我有用的步骤。

  1. 下载SQlite Amalgamation文件。
  2. 打开Code::Blocks -> 新建项目 -> 选择静态库
  3. 解压你下载的文件,并将文件夹/内容复制到你的新项目目录中。将所有文件添加到项目中并构建项目
  4. 在bin/Debug或bin/Release目录中找到ProjectName.a文件。将该文件复制到你实际的SQlite项目目录中。
  5. 转到Code::Blocks 项目->生成选项。选择“链接器设置”选项卡并添加.a文件的路径。不要关闭它!
  6. 在“搜索目录”选项卡中,选择“编译器”选项卡,添加Amalgamation头文件的路径,或将头文件复制到你的目录中(可以将头文件添加到你的项目中),并在“链接器”选项卡中添加.a文件的路径。
  7. 现在进行编译!!!希望这能运行

就这些,我希望它能为其他新手节省一些搜索时间


2
您需要先编译sqlite代码,然后在需要使用的项目中只需添加#include "sqlite3.h"更新: 请尝试以下步骤:
从sqlite网站下载此软件包并将其解压缩到某个文件夹中(例如"sqlite")。打开终端并进入该文件夹。在其中运行以下命令:
./configure
sudo make 
sudo make install

看看会发生什么。 它应该自动构建。 也请查阅存档内部的README文件。


谢谢您的回复 :) ..虽然我不知道如何编译它.. 我只需要将它添加到某个项目中并“构建项目”吗? - Gerald Torres
谢谢 :) 尽管在我看到这个之前我已经修复了它.. :( 不管怎样还是谢谢 :) - Gerald Torres

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接