您当前的位置:首页 > 计算机 > 软件应用 > 开发工具(IDE)

Visual Studio 2015 下静态和动态编译 SQLite3 及使用

时间:08-01来源:作者:点击数:

可使用免费的 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 的代码
    #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 文件夹中
    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 文件夹,执行如下命令:
    LIB /DEF:sqlite3.def /machine:IX86
    

    即可生成 .lib 文件

在 MFC 中使用 SQLite3 动态库

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

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐