可使用免费的 Visual Studio Community 版本:https://www.visualstudio.com/products/visual-studio-community-vs
个人使用完全足够了

去 SQLite 官网下载 SQLite3 的源代码:https://www.sqlite.org
例如我下载的是 sqlite-amalgamation-3081101.zip
解压之后会发现有 4 个文件,但是我们只需要 sqlite3.c 和 sqlite3.h

以下编译 SQLite3 和使用 SQLite3 我是分开使用两个解决方案,为了理解起来清晰一点
但是最好将其放一个解决方案中,内分为两个项目,有利于代码的组织

静态编译 SQLite3

  1. 打开 VS 2015, 新建项目
    依次选择:已安装 → 模板 → Visual C++ → Windows → Win32 → Win32 项目
    在下面选择好位置,输入名称,点击「确定」

  2. 然后会进入 Win32 应用程序向导
    点击「下一步」,在「应用程序类型」选择「静态库」,
    在「附加选项」中将「预编译头」去掉
    最后点击「完成」,如下图所示
    VS 2015

  3. 将 sqlite3.c 和 sqlite3.h 复制到项目目录下,然后将其添加到项目

  4. 在「解决方案资源管理器」中选中当前项目,然后依次点击上面菜单栏中的
    项目 → 属性,进入项目属性页
    将上面的配置选成 “Relase”, 然后依次进入,配置属性 → C/C++ → 代码生成 → 运行库,选择「多线程 DLL(MD)」
    需要注意的一点是,同个解决方案内有多个项目,必须选择相同的运行库
    VS 2015

  5. 点击,生成 → 配置管理器,将「活动解决方案配置」选为 “Relese”

  6. 点击,生成 → 生成解决方案

  7. 静态库已生成,在项目目录 Release 文件夹下,一个 .lib 文件
    该 lib 包含函数代码本身(即包括函数的索引,也包括实现),
    在其它项目编译引用时只需要将该 .lib 和 .h 文件加入程序当中即可

选择 “Relese” 还是 “Debug” 按情况而定,如果项目需要发布了,那么选择 “Relese” 会更好,
如果需要调试,那么选择 “Debug” 会更好。但是确保同一解决方案下的各项目要统一

在 MFC 中使用 SQLite3 静态库

注意:开发全新的 PC 桌面客户端请不要使用 MFC, 已经是过时的技术了。
有了坑爹的学校,才有了我去用 MFC
请使用 Qt, C# WPF, Node-Webkit 等

我们需要 .lib 和 .h 文件

新建一个项目,模板 → Visual C++ → Windows → MFC → MFC 应用程序
应用程序类型,我们选择「基于对话框」,看起来会简单一点,其它默认即可

  1. 将上一步编译好的 .lib 文件和源代码中的 .h 文件放到项目目录中,然后添加到项目中
    好一点的做法是,在项目目录中建立 sqlite3 文件夹,然后将两个文件放到这里
    比如说名为 sqlite3.lib 和 sqlite3.h

  2. 比如说在主 Dlg 文件 MFC-SQLite3Dlg.h 确定按钮写入如下简单使用 SQLite3 的代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include "SQLite\sqlite3.h"
    
    
    void CMFCSQLite3Dlg::OnBnClickedOk()
    {
        ::sqlite3 *db = NULL;
        int ret;
    
        ret = ::sqlite3_open("data.db", &db);
        if (ret == SQLITE_OK) {
            MessageBox(_T("数据库打开成功"));
        }
        else {
            MessageBox(_T("数据库打开失败"));
        }
    
        CDialogEx::OnOK();
    }
    

    然后生成该项目就可以了

使用静态库非常简单,只需将 .lib 和 .h 文件添加到项目即可

动态编译 SQLite3

动态编译和静态编译差不多,只有两个地方不一样

  1. 项目属性页 → 配置属性 → 常规 → 项目默认项 → 配置类型,选择「动态库(.dll)」

  2. 需要模块定义文件 .def, 可从 SQLite 官网下载,
    例如 sqlite-dll-win32-x86-3081101 内有 .dll 和 .def 两个文件,但是我们只需要 .def
    当然你也可以自己编写 .def 文件,定义导出函数,比较懒就用现成的吧

    所以你总共需要 3 个文件,.c, .h, .def, 分别将其添加到项目

    项目属性页 → 配置属性 → 链接器 → 输入 → 模块定义文件,写入模块定义文件 sqlite3.def

生成项目,即可得到 .dll 和 .lib 文件
有可能会提示你,无法解析的外部符号,不要急,将那些导出函数删除即可

或者利用官方提供的 .dll 和 .def 文件生成 .lib

下载官方提供的文件 sqlite-dll-win32-x86-3081101, 内有 sqlite3.def 和 sqlite3.dll 这两个文件

  1. 将 .def 和 .dll 文件放到 SQLite3-Dynamic 文件夹中(随便)

  2. 将下面三个文件放到 SQLite3-Dynamic 文件夹中

    1
    2
    3
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\lib.exe
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\mspdb140.dll
    
  3. 使用命令提示符,进入 SQLite3-Dynamic 文件夹,执行如下命令:

    1
    LIB /DEF:sqlite3.def /machine:IX86
    

    即可生成 .lib 文件

在 MFC 中使用 SQLite3 动态库

我们需要 .dll, .lib, .h 文件

和使用 SQLite3 一模一样,生成项目只需要 .lib 和 .h 文件,
但是程序运行需要 .dll 文件