如何在C++程序中使用SQLite使用代码::块
How to use SQLite in C++ program using Code::Blocks?
我是Code::Blocks和SQLite的初学者,对C++有一些基本知识。我目前使用的是Ubuntu 11.04。
我在这里下载了SQLite合并。当我提取zip文件时,里面有四个文件:shell.c
、sqlite3.c
、sqlite3.h
和sqlite3ext.h
。如果我只是将这些文件添加到(例如)控制台项目中,就会出现一个错误:下载的sqlite的.c每个都有自己的主函数。从项目中删除这些,错误就消失了,我可以调用#include "sqlite3.h"
。我正试图遵循这一点,并尝试了这里的前两行代码,结果出现了一个错误:undefined reference to sqlite3_open
。
我认为将那些.h直接添加到控制台项目中不是正确的使用方式,尽管我不确定。
我应该如何使用这些?我应该怎么做才能将它们用于我的C++程序?
非常感谢您的帮助。:)
编辑:我还试图通过以下操作创建这些sqlite文件的.a文件。当我尝试它时,它会发出一个错误:cannot find -lsqlite
。
我搞定了!尽管我做了一些事情,但还是引起了一些问题。。我忘记删除之前在"项目">"构建选项">"链接器设置"中添加的.a文件,这导致了问题。。
以下是我添加SQLite的步骤:(对于那些可能有相同问题的人)
-
将从SQLite合并中提取的文件复制到项目的目录中。
-
添加sqlite文件(项目>添加文件),但shell.c除外(这是导致多功能错误的原因)
-
编译它(是的,一个简单的Ctrl+f9)。
-
这里有错误:
undefined reference to pthread_mutexattr....
。通过转到"项目">"构建选项">在左上角的Debug
和Release
上方突出显示"项目名称">"链接器设置",并将"-lpthread"
(不带引号)添加到Other linker options:
,可以修复这些问题。 -
还发现了一些错误:
undefined reference to dlopen, dlerror....
。在前面添加的"-lpthread"下面添加"-ldl"。
完成:)
作为一个初学者,我没有找到Windows的完整答案,一开始理解一切都很痛苦。以下是对我有效的方法。
- 下载SQlite合并文件
- 打开代码::块->新建项目->选择静态库
- 解压缩下载的文件,并将文件夹/内容复制到新的项目目录中。将所有文件添加到项目中,生成项目
- 您将在bin/Debug或bin/Release目录中找到ProjectName.a文件。将该文件复制到实际的SQlite项目目录中
- 转到代码::块项目->生成选项。选择"链接器设置"选项卡,然后将路径添加到.a文件。还不要关闭它
- 在"搜索目录"选项卡中,选择"编译器"选项卡,添加合并头文件的路径,或将头文件复制到您的目录(您可以将头文件添加到项目中),然后在"链接器"选项卡中添加.a文件的路径
- 现在编译!!!希望它能运行
仅此而已,我希望它能为另一个noob 节省一些搜索时间
您需要首先编译sqlite代码,然后将#include "sqlite3.h"
编译到您需要的项目中。
UPD:试试这个:
从sqlite站点下载这个包,并将其提取到某个位置,例如,一个名为"sqlite"的文件夹中。打开终端,进入该文件夹。在里面,运行
./configure
sudo make
sudo make install
看看会发生什么。它应该自动构建自己。也可以查阅档案中的自述文件。
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 查询SQLite数据库中的日期
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 使用 cl 构建代码并连接到 sqlite 库
- 如何使用 SQLite PRAGMA 线程 = X ;到C++代码中
- SQLite 错误代码:sqlite_step() 返回 5 (SQLITE_BUSY)
- 如何从Qt获取sqlite错误代码
- 如何在C++程序中使用SQLite使用代码::块
- C++ SQLite 查询只工作一次。我的代码有什么问题?
- 混合c++ /CLI代码与非托管SQLite