文章目录
编译准备
ODB是一个开源、支持多平台、多数据库基于C++的ORM框架,可将C++类对象与数据库表映射,进行轻松的数据库查询和操作,编译使用时需要在官网下载三个库包括: odb-2.4.0-i686-windows
、 libodb-2.4.0
、 libodb-sqlite-2.4.0
,作为学习还需要下载 odb-examples-2.4.0
。
; 配置ODB工具环境
odb-2.4.0-i686-windows
类似与ODB的源码编译工具,ODB的框架需要将 特定的数据结构文件(.hxx)
编译成特定文件一个是三个,例如: person.hxx
经过编译会生成 person-odb.hxx
、 person-odb.ixx
和`person-odb.cxx
,解压缩下载的zip包并配置到环境变量中即可,配置如下所示:
配置完成后可以在 CMD
控制台上进行验证:
编译ODB运行时库
libodb-2.4.0
是在具体程序运行时所依赖的动态库,可以使用 Visual Studio
直接打开进行编译,本文使用VS2019为例。解压缩下载的zip包,双击其中的对应版本的 .sln
文件,VS2013或以上版本都选择 libodb-vc12.sln
即可,编译完成后生产 bin
、 lib
、 bin64
和 lib64
四个文件夹,前两个表示32位,后两个表示64位。
; 编译ODB驱动
ODB数据库的驱动编译依赖具体使用的 数据库
提供的 运行时库
,在使用使用ODB进行编程时也需要使用这些 运行时库
,以下使用 SQLite
数据库的编译作为例子。
Sqlite源码编译
在编译 libodb-sqlite-2.4.0
前需要先编译一下SQLite源码,生成相对应的 lib
文件后续会用到。在SQLite官网下载源码zip,下载的压缩包解压缩后得到四个文件,如下所示:
使用VS2019创建 静态库项目
,如下所示:
将 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静态库,生成内容如下如下:
; libodb-sqlite-2.4.0编译
解压缩下载的 libodb-sqlite-2.4.0.zip
文件得到 libodb-sqlite-2.4.0
文件夹,双击其中的对应版本的 .sln
文件,VS2013或以上版本都选择 libodb-sqlite-vc12
即可。
在编译前还需要对项目的属性进行修改,在修改前建议将编译好的文件都拷贝到一起,根据之前的生成的动态库和静态库,整理目录如下:
- ODB运行时库:
bin
、lib
、bin64
、lib64
和odb文件夹
五个文件夹拷贝到libodb-sqlite-2.4.0
文件夹的common_lib
文件夹中(common_lib
文件夹是自己创建的)。 - SQLite静态库:
bin
、bin64
两个文件夹和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\;
- 附加依赖项->
不用修改
配置完成后编译对应的四个版本源码同样得到 bin
、 lib
、 bin64
和 lib64
四个文件夹,前两个表示32位 数据库驱动
,后两个表示64位 数据库驱动
。至此准备工作均已完成。
运行实例程序
解压缩 odb-examples-2.4.0.zip
压缩包,其中是ODB官方的实例程序,对于 不同的数据库
有不同的 .sln文件
本文使用的是SQLite因此打开 examples-sqlite-vc12.sln
解决方案,以 hello-sqlite-vc12
示例项目为例,如下所示:
此时如果双击上图中的三个文件会显示文件不存在,这就是需要使用ODB工具进行编译,可以编译
hello-sqlite-vc12
整个项目就会生成文件。但在编译整个项目之前还是需要整合之前编译的文件以及修改项目属性。
ODB运行时库: bin
、 lib
、 bin64
、 lib64
和 odb文件夹
五个文件夹拷贝到 odb-examples-2.4.0
文件夹的 odb\common_lib
文件夹中(odb\common_lib
文件夹是自己创建的)。
ODB数据库驱动: bin
、 lib
、 bin64
、 lib64
、 odb
四个文件夹和 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.dll
和 odb\db_lib\lib_sqlite\odb-sqlite-d-2.4-vc12.dll
。
ODB在创建DB对象时依赖参数配置,对于当前这个示例而言在运行时需要进行参数设置, 右键点击项目
-> 属性
-> 调试
-> 命令参数
填写 --database $(OutDir)\hello.db
Original: https://blog.csdn.net/u010031316/article/details/122282838
Author: 猿太极
Title: VS2019编译 ODB 开源项目以及示例程序运行详解
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816488/
转载文章受原作者版权保护。转载请注明原作者出处!