VS2019 编译 odb-mysql2.4详细过程

本文以MySQL数据库为例,其他数据库类似,只需要下载对应的数据库的包即可。

第一步,准备资源包
本文中下载的代码可以在odb官网下载,地址为:https://www.codesynthesis.com/products/odb/download.xhtml
官网下载时,是没有mysql数据库的头文件和链接库的,需要自行另外下载。
需要下载的资源如下图所示:
在这里插入图片描述
也可以在CSDN上下载我已经打包好的资源文件,这个文件包中包含了mysql头文件和库文件,有32位和64位,地址为:
https://download.csdn.net/download/youyicc/12399765
资源文件目录如下:
在这里插入图片描述

第二步,编译libodb2.4
解压libodb-2.4.0.zip,解压后,里面自带了VS很多版本的.sln文件,最高的支持到VS2013,不过可以直接用高版本的VS打开。资源目录如下所示:
在这里插入图片描述
用VS2019直接打开,升级到最新的SDK,直接右键编译,这个项目编译不依赖其他库,所以直接编译即可,有一些警告信息,可以不用管它,输出结果如下:
在这里插入图片描述
生成的库文件如下所示:
在这里插入图片描述
在这里插入图片描述
这里是生成的32位的debug版本的,release版本和64位版本直接生成即可。

第三步,编译libodb-mysql-2.4
直接解压libodb-mysql-2.4.0.zip文件夹,解压后资源目录如下所示:
在这里插入图片描述
用VS2019打开libodb-mysql-vc12.sln,升级到最新SDK,此时,如果直接编译,会提示很多错误,如下图所示:
在这里插入图片描述
这里其实是因为odb的头文件没有找到,所以需要将上一个解压的文件夹中的odb的头文件和链接库复制过来,如下图所示,复制libodb-2.4.0文件夹中的lib文件夹和odb文件夹:
在这里插入图片描述
直接替换libodb-mysql-2.4.0文件夹中的lib文件夹和odb文件夹,如下所示:
在这里插入图片描述
再次编译,发现还是提示无法打开“odb/pre.hxx”等错误,如下所示:
在这里插入图片描述
右键项目,点击属性,在“VC++ 目录”中,选择包含库目录,根据需要输入odb文件夹的相对路径,例如:
在这里插入图片描述
再次编译,发现odb头文件找不到的问题,已经不存在了,现在提示mysql的头文件找不到,如下图所示:
在这里插入图片描述
此时,解压mysql.zip,目录结构如下所示:
在这里插入图片描述
将include文件夹复制到libodb-mysql-2.4.0文件夹中,如下所示:
在这里插入图片描述
再次打开项目属性,在“C++ 目录”中添加mysql的路径,配置如下所示:
在这里插入图片描述
最后再编译,最后发现提示“无法打开odb-d.lib”。
因为先前已经将上一步生成的lib文件夹复制了过来,这边只是没有找到库的路径,所以在项目属性中,打开“C++ 目录”中添加“库目录”,如下所示:
在这里插入图片描述
再次编译,提示“无法打开文件libmysql.lib”文件,这个文件就是mysql的链接库。在mysql文件夹中,将lib32文件夹中的“libmysql.lib”复制到“libodb-mysql-2.4.0/lib”中, 如下所示:
在这里插入图片描述
最后编译完成,如下所示:
在这里插入图片描述
生成的库目录如下所示:
在这里插入图片描述
在这里插入图片描述
注:releae的编译方法类似,64位编译时复制对应的lib64文件夹到lib64文件夹即可。

第三步,编译odb-examples-2.4
解压odb-examples-2.4.0.zip文件,目录如下所示:
在这里插入图片描述
用VS2019打开examples-mysql-vc12.sln文件,升级到最新的SDK库,默认“c++11-mysql-vc12”是启动项,这里不用修改,如果用VS2008之类的不支持C++11的编译器打开,则编译“hello-mysql-vc12”,项目配置过程都是相同的。
这里编译的时候,会提示一个错误,如下所示:
在这里插入图片描述
这个问题纠结了很久,最后才知道,是编译器在编译之前,会自动将employee.hxx文件通过odb.exe编译成sql文件和对应的C++类。要编译employee.hxx,需要先将odb-2.4.0-i686-windows.zip解压出来,目录如下所示:
在这里插入图片描述
在bin文件夹中,就有odb.exe文件。 这里有两种方法可以处理这个问题。
第一种,将employee.hxx复制到odb.exe同级目录中, 如下所示:
在这里插入图片描述
打开cmd窗口,跳转到odb.exe所在的目录,执行下面命令:

odb -d <database> --std c++11 --generate-schema --generate-query employee.hxx

这里database换成mysql即可,这里会生成几个文件,如下所示:
在这里插入图片描述
将生成的文件复制到odb-examples-2.4.0\c++11目录下即可,不推荐这种方式,因为每次重新编译都需要这样编译,挺麻烦的。
第二种,将odb.exe配置到环境变量中。首先将odb-2.4.0-i686-windows复制到系统资源盘(看
各人需要,我是放在D盘的),目录如下所示:
在这里插入图片描述
打开系统环境变量,在系统环境变量的Path中,增加odb.exe的完整目录,如下所示:
在这里插入图片描述
打开cmd窗口,输入odb --version回车,出现下面的界面表示配置成功,否则重启电脑试试:
在这里插入图片描述
配置好之后,在VS中编译时,会自动调用odb编译employee.hxx文件。

这里直接编译,也会提示错误:无法打开 源 文件“odb/database.hxx”,如下所示:
在这里插入图片描述
这里将上一步libodb-mysql-2.4.0文件夹中的“odb”文件夹和“lib”文件文件夹复制到“odb-examples-2.4.0\c++11”中, 如下所示:
在这里插入图片描述
右键“c++11-mysql-vc12”,打开属性对话框,在“VC++ 目录”中,添加odb和lib,如下所示:
在这里插入图片描述
编译的时候,会提示mysql相关的头文件不能打开,如下所示:
在这里插入图片描述
同样将mysql文件夹中的include文件夹复制到“odb-examples-2.4.0\c++11”中, 如下所示:
在这里插入图片描述
右键“c++11-mysql-vc12”,打开属性对话框,在“VC++ 目录”中,添加mysql的路径,如下所示:
在这里插入图片描述
再次编译,提示“无法打开文件 odb-mysql-d.lib”,此时将上一步libodb-mysql-2.4.0文件夹中生成的lib文件夹复制到odb-examples-2.4.0\c++11\lib即可,目录如下:
在这里插入图片描述
这里需要右键“c++11-mysql-vc12”,打开属性对话框,在“VC++ 目录”中,添加库目录的路径,如下所示:
在这里插入图片描述
最后编译成功,如下所示:
在这里插入图片描述
因为工程中,需要的链接库,都已经配置好,所以只需要将链接库的目录配置好即可。

第四步,生成数据库表
在第三步中,已经生成了employee.sql文件,在mysql管理工具中,将表生成出来,这里用的是Mavicat for MySQL工具。
生成的表结构如下所示:
在这里插入图片描述

最后一步,修改数据库连接代码
发现源代码中,是通过启动时传递argc和argv方式传递数据库连接信息,不方便调试,所以可以直接修改这部分代码。
源代码如下:

    unique_ptr<database> db (create_database (argc, argv));

直接改成

unique_ptr<database> db(
	new odb::mysql::database(
		"root"            // 数据库登录名
		, "123456"        // 数据库登录密码
		, "mysqltest"     // 数据库名称
		, "127.0.0.1"     // 数据库连接地址
		, 3306            // 数据库连接端口
	));

编译完成后,运行生成的exe,会提示找不到odb-mysql-d等一系列动态链接库,只需要将上面步骤中生成的.dll文件和mysql中对应的.dll文件复制到exe同级目录即可。
运行结果如下:
在这里插入图片描述
数据库中已经有数据了,如下所示:
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值