VS2019编译 ODB 开源项目以及示例程序运行详解

编译准备

ODB是一个开源、支持多平台、多数据库基于C++的ORM框架,可将C++类对象与数据库表映射,进行轻松的数据库查询和操作,编译使用时需要在官网下载三个库包括:odb-2.4.0-i686-windowslibodb-2.4.0libodb-sqlite-2.4.0,作为学习还需要下载odb-examples-2.4.0
下载安装包

配置ODB工具环境

odb-2.4.0-i686-windows类似与ODB的源码编译工具,ODB的框架需要将特定的数据结构文件(.hxx)编译成特定文件一个是三个,例如:person.hxx经过编译会生成person-odb.hxxperson-odb.ixx和``person-odb.cxx`,解压缩下载的zip包并配置到环境变量中即可,配置如下所示:
odb工具环境配置

配置完成后可以在CMD控制台上进行验证:
验证ODB工具配置

编译ODB运行时库

libodb-2.4.0是在具体程序运行时所依赖的动态库,可以使用Visual Studio直接打开进行编译,本文使用VS2019为例。解压缩下载的zip包,双击其中的对应版本的.sln文件,VS2013或以上版本都选择libodb-vc12.sln即可,编译完成后生产binlibbin64lib64四个文件夹,前两个表示32位,后两个表示64位。

运行时库编译

编译ODB驱动

ODB数据库的驱动编译依赖具体使用的数据库提供的运行时库,在使用使用ODB进行编程时也需要使用这些运行时库,以下使用SQLite数据库的编译作为例子。

Sqlite源码编译

在编译libodb-sqlite-2.4.0前需要先编译一下SQLite源码,生成相对应的lib文件后续会用到。在SQLite官网下载源码zip,下载的压缩包解压缩后得到四个文件,如下所示:

下载SQLite源码

使用VS2019创建静态库项目,如下所示:
创建SQLite项目

SQLite源码拷贝到创建的项目中,并删除其中项目创建后自动生成的源码文件,在VS工程文件中做相同修改,如下图所示:
在这里插入图片描述

右键点击项目->属性,对项目进行修改,包括如下几个部分:

  • 配置Debug,平台x64

    • 常规->输出目录->$(SolutionDir)\bin64
    • 常规->目录文件名->$(ProjectName)d
    • C\C+±>预处理器->SQLITE_ENABLE_UNLOCK_NOTIFY;
  • 配置Debug,平台Win32

    • 常规->输出目录->$(SolutionDir)\bin

    • 常规->目录文件名->$(ProjectName)d

    • C\C+±>预处理器->SQLITE_ENABLE_UNLOCK_NOTIFY;

  • 配置Release,平台x64

    • 常规->输出目录->$(SolutionDir)\bin64
    • 目录文件名->$(ProjectName)
    • C\C+±>预处理器->SQLITE_ENABLE_UNLOCK_NOTIFY;
  • 配置Release,平台Win32

    • 常规->输出目录->$(SolutionDir)\bin

    • 目录文件名->$(ProjectName)

    • C\C+±>预处理器->SQLITE_ENABLE_UNLOCK_NOTIFY;

配置完成后分别使用这四个不同模式编译SQLite静态库,生成内容如下如下:

SQLite编译完成

libodb-sqlite-2.4.0编译

解压缩下载的libodb-sqlite-2.4.0.zip文件得到libodb-sqlite-2.4.0文件夹,双击其中的对应版本的.sln文件,VS2013或以上版本都选择libodb-sqlite-vc12即可。

在编译前还需要对项目的属性进行修改,在修改前建议将编译好的文件都拷贝到一起,根据之前的生成的动态库和静态库,整理目录如下:

  • ODB运行时库:binlibbin64lib64odb文件夹五个文件夹拷贝到libodb-sqlite-2.4.0文件夹的common_lib文件夹中(common_lib文件夹是自己创建的)。

  • SQLite静态库:binbin64两个文件夹和sqlite3.h文件拷贝到libodb-sqlite-2.4.0文件夹的db_source文件夹中(db_source文件夹是自己创建的)。

拷贝完成后打开.sln后找到需要修改,右键点击项目->属性->C/C++->常规->附加包含目录右键点击项目->属性->链接器->常规->附加库目录右键点击项目->属性->链接器->输入->附加依赖项,具体配置如下:

  • 配置Debug,平台x64

    • 附加包含目录->$(SolutionDir)\common_lib\;$(SolutionDir)\db_source\;
    • 附加库目录->$(SolutionDir)\common_lib\lib64\;$(SolutionDir)\db_source\bin64\;
    • 附加依赖项->sqlite3.lib改为sqlite3d.lib
  • 配置Debug,平台Win32

    • 附加包含目录->$(SolutionDir)\common_lib\;$(SolutionDir)\db_source\;

    • 附加库目录->$(SolutionDir)\common_lib\lib\;$(SolutionDir)\db_source\bin\;

    • 附加依赖项->sqlite3.lib改为sqlite3d.lib

  • 配置Release,平台x64

    • 附加包含目录->$(SolutionDir)\common_lib\;$(SolutionDir)\db_source\;
    • 附加库目录->$(SolutionDir)\common_lib\lib64\;$(SolutionDir)\db_source\bin64\;
    • 附加依赖项->不用修改
  • 配置Release,平台Win32

    • 附加包含目录->$(SolutionDir)\common_lib\;$(SolutionDir)\db_source\;

    • 附加库目录->$(SolutionDir)\common_lib\lib\;$(SolutionDir)\db_source\bin\;

    • 附加依赖项->不用修改

配置完成后编译对应的四个版本源码同样得到binlibbin64lib64四个文件夹,前两个表示32位数据库驱动,后两个表示64位数据库驱动。至此准备工作均已完成。

运行实例程序

解压缩odb-examples-2.4.0.zip压缩包,其中是ODB官方的实例程序,对于不同的数据库有不同的.sln文件本文使用的是SQLite因此打开examples-sqlite-vc12.sln解决方案,以hello-sqlite-vc12示例项目为例,如下所示:
例程序解决方案展示
此时如果双击上图中的三个文件会显示文件不存在,这就是需要使用ODB工具进行编译,可以编译hello-sqlite-vc12整个项目就会生成文件。但在编译整个项目之前还是需要整合之前编译的文件以及修改项目属性。

ODB运行时库:binlibbin64lib64odb文件夹五个文件夹拷贝到odb-examples-2.4.0文件夹的odb\common_lib文件夹中(odb\common_lib文件夹是自己创建的)。

ODB数据库驱动:binlibbin64lib64odb四个文件夹和sqlite3.h文件拷贝到odb-examples-2.4.0文件夹的odb\db_lib\lib_sqlite文件夹中(odb\db_lib\lib_sqlite文件夹是自己创建的)。

拷贝完成后同样修改两个位置,右键点击项目->属性->C/C++->常规->附加包含目录右键点击项目->属性->链接器->常规->附加库目录,具体配置如下:

  • 配置Debug,平台x64

    • 附加包含目录->$(SolutionDir)\odb\common_lib\;$(SolutionDir)\odb\db_lib\lib_sqlite\;
    • 附加库目录->$(SolutionDir)\odb\common_lib\lib64\;$(SolutionDir)\odb\db_lib\lib_sqlite\lib64\;
  • 配置Debug,平台Win32

    • 附加包含目录->$(SolutionDir)\odb\common_lib\;$(SolutionDir)\odb\db_lib\lib_sqlite\;
    • 附加库目录->$(SolutionDir)\odb\common_lib\lib\;$(SolutionDir)\odb\db_lib\lib_sqlite\lib\;
  • 配置Release,平台x64

    • 附加包含目录->$(SolutionDir)\odb\common_lib\;$(SolutionDir)\odb\db_lib\lib_sqlite\;
    • 附加库目录->$(SolutionDir)\odb\common_lib\lib64\;$(SolutionDir)\odb\db_lib\lib_sqlite\lib64\;
  • 配置Release,平台Win32

    • 附加包含目录->$(SolutionDir)\odb\common_lib\;$(SolutionDir)\odb\db_lib\lib_sqlite\;
    • 附加库目录->$(SolutionDir)\odb\common_lib\lib\;$(SolutionDir)\odb\db_lib\lib_sqlite\lib\;

配置好后进行编译会生成driver.exe。在运行前需要把对应版本的动态库都拷贝到driver.exe同级目录下,以debug为例需要拷贝obd\common_lib\bin64\odb-d-2.4-vc12.dllodb\db_lib\lib_sqlite\odb-sqlite-d-2.4-vc12.dll

ODB在创建DB对象时依赖参数配置,对于当前这个示例而言在运行时需要进行参数设置,右键点击项目->属性->调试->命令参数填写--database $(OutDir)\hello.db
测试完成

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值