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

文章目录

编译准备

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

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

; 配置ODB工具环境

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

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

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

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

编译ODB运行时库

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

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

; 编译ODB驱动

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

Sqlite源码编译

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

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

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

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

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

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

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

  • 配置 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静态库,生成内容如下如下:

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

; 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示例项目为例,如下所示:

VS2019编译 ODB 开源项目以及示例程序运行详解
此时如果双击上图中的三个文件会显示文件不存在,这就是需要使用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

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

Original: https://blog.csdn.net/u010031316/article/details/122282838
Author: 猿太极
Title: VS2019编译 ODB 开源项目以及示例程序运行详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816488/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球