window编译sqlite3
· 阅读需 2 分钟
windows cpp 编译sqlite3
SQLite 提供 amalgamation 单文件源码,适合直接加入 C/C++ 项目。编译时要统一运行库、字符集和目标架构,并保留实际 SQLite 版本用于问题追踪。
下载 https://www.sqlite.org/2019/sqlite-preprocessed-3280000.zip 解压D:\sqlite-preprocessed-3280000
把.c和.h文件分离,创建一个include文件夹用来存放.h文件
- 打开visual studio 2017 创建一个c++控制台项目
名称:sqlitetest
- 添加头文件
解决方案资源管理器 -》头文件 -》 右键 -》添加 -》现有项
选中include中所有的.h文件
- 添加.c文件
解决方案资源管理器 -》源文件 -》 右键 -》添加 -》现有项
选中所有的.c文件
- 编译 visual studio 菜单栏 -》项目 -》sqlitetest属性
配置:Release
配置属性 -》C/C++ -》常规 -》附加包含目录 -》点击编辑
点击带*的文件夹图标 -》点击... -》选中D:\sqlite-preprocessed-3280000\include
配置属性 -》C/C++ -》优化 -》内联函数扩展 -》已禁用
visual studio 工具栏 -》Debug 改成 Release
visual studio 菜单栏 -》生成 -》生成解决方案
解决编译报错
- 找到sqlite3ext.h
在#define SQLITE3EXT_H 下一行添加 #define SQLITE_CORE 1
- 排除文件 fts1.c, fts2.c, icu.c, tclsqlite.c, fts3_tokenizer.c
右键 -》从项目中排除
这样就可以编译成功了
编写测试代码 sqlitetest.cpp
#include <iostream>
#include "sqlite3.h"
int create(sqlite3** db) {
int rc = sqlite3_open("test.db", db);
std::string sql = "create table if not exists test(name text)";
rc = sqlite3_exec(*db, sql.c_str(), NULL, NULL, NULL);
std::cout << "rc:" << rc << "\n";
return rc;
}
int main()
{
std::cout << "Hello World!\n";
sqlite3* db = NULL;
int rc = create(&db);
return 0;
}
visual studio 工具栏 -》 点击本地Windows调试器
会看到
Hello World!
rc:0