【开源库】libodb库编译及使用
前言
本文介绍windows平台下libodb库的编译及使用。
文末提供libodb-2.4.0编译好的msvc2019_64版本,可直接跳转自取
ODB库学习相关
【开源库学习】libodb库学习(一)
【开源库学习】libodb库学习(二)
【开源库学习】libodb库学习(三)
【开源库学习】libodb库学习(四)
【开源库学习】libodb库学习(五)
【开源库学习】libodb库学习(六)
【开源库学习】libodb库学习(七)
libodb库
libodb 是一个开源、跨平台、跨数据库的对象关系映射(ORM)系统,可以持久化C++对象到关系数据库,而不必处理表、列或者SQL,无需手动编写任何映射代码。ODB支持MySQL
,SQLite
,PostgreSQL
,Oracle
和微软SQL Server
关系数据库以及C ++98/03和C ++11语言标准。它还配备了用于Boost和Qt可选的配置文件,可以无缝地使用这些库持久化C++类的值类型、容器和智能指针。
编译
1.下载源码
libodb库下载地址:https://www.codesynthesis.com/products/odb/download.xhtml
根据需要下载,如在windows平台下,使用mssql数据库和qt框架,下载以下文件:
odb-2.4.0-i686-windows
libodb-2.4.0
libodb-mssql-2.4.0
libodb-qt-2.4.0
(需要已安装qt,编译会用到)
2.安装ODB
- 解压
odb-2.4.0-i686-windows
- 添加
bin
目录到环境变量 - 命令行输入
odb --version
看是否安装成功
3.编译libodb
- 使用visual studio 2019打开
libodb-2.4.0
文件夹下libodb-vc12.sln
文件,弹出的对话框点击确定。 - 在配置管理器里选择要配置的类型
Debug/Release
、Win32/x64
。 Ctrl+B
编译。- 生成库文件在
libodb-2.4.0/lib64
目录下(以Release x64
为例)。
4.编译libodb-mssql
- 将
libodb-2.4.0
文件夹下obd
和lib64
文件夹拷贝至libodb-mssql-2.4.0
文件夹。(未拷贝会生成失败报错) - 使用visual studio 2019打开
libodb-mssql-2.4.0
文件夹下libodb-mssql-vc12.sln
文件,弹出的对话框点击确定。(未升级到目标框架会生成失败报错) - 在配置管理器里选择要配置的类型
Debug/Release
、Win32/x64
。 - 在
项目/属性/VC++目录/库目录
中添加odb.lib
所在的目录(编译libodb时的库生成目录,步骤一已拷贝至libodb-mssql-2.4.0
文件夹下lib64
目录)。(未添加正确库目录会生成失败报错) Ctrl+B
编译。- 生成库文件在
libodb-mssql-2.4.0/lib64
目录下(以Release x64
为例)。
5.编译libodb-qt
- 将
libodb-mssql-2.4.0
文件夹下obd
和lib64
文件夹拷贝至libodb-qt-2.4.0
文件夹。(未拷贝会生成失败报错) - 使用visual studio 2019打开
libodb-qt-2.4.0
文件夹下libodb-qt-vc12.sln
文件,弹出的对话框点击确定。(未升级到目标框架会生成失败报错) - 在配置管理器里选择要配置的类型
Debug/Release
、Win32/x64
。 - 在
项目/属性/VC++目录/库目录
中添加odb.lib
,odb-mssql.lib
所在的目录(编译libodb-mssql时的库生成目录,步骤一已拷贝至libodb-qt-2.4.0
文件夹下lib64
目录),添加Qt5Core.lib
所在的目录(在qt的安装目录下)。(未添加正确库目录会生成失败报错) Ctrl+B
编译。- 生成库文件在
libodb-qt-2.4.0/lib64
目录下(以Release x64
为例)。
使用
-
将
libodb-mssql-2.4.0
文件夹下obd
和lib64
文件夹拷贝至libodb-qt-2.4.0
文件夹。(未拷贝会生成失败报错) -
使用visual studio 2019打开
odb-examples-2.4.0
文件夹下examples-mssql-vc12.sln
文件,弹出的对话框点击确定。(未升级到目标框架会生成失败报错) -
在配置管理器里选择要配置的类型
Debug/Release
、Win32/x64
。 -
在
项目/属性/VC++目录/库目录
中添加odb.lib
,odb-mssql.lib
所在的目录(编译libodb-mssql时的库生成目录,步骤一已拷贝至libodb-examples-2.4.0
文件夹下lib64
目录)(未添加正确库目录会生成失败报错)
-
在
项目/属性/VC++目录/包含目录
中添加odb
文件夹所在的目录(步骤一已拷贝至libodb-mssql-2.4.0
文件夹下,故此处为libodb-examples-2.4.0
目录),包含libodb-examples/c++11
目录 (未添加正确包含目录会生成失败报错)
-
使用ODB编译器生成
employee-odb.hxx,employee-odb.cxx,employee-odb.ixx
文件。方法为:在odb-examples-2.4.0\c++11
文件夹(employee.hxx所在文件夹)下打开命令行工具,输入odb -d mssql -q -s --std c++11 employee.hxx
,无报错且在该目录下生成文件则为成功,否则根据命令行提示查找原因。
obd命令行使用详见:https://www.codesynthesis.com/products/odb/doc/odb.xhtml
7. Ctrl+B
编译
8. odb-examples-2.4.0\c++11\x64\Release
目录下生成可执行文件driver.exe
,将编译libodb和libobd-mssql时生成的动态库文件(bin目录下odb-2.4-vc12.dll
和odb-mssql-2.4-vc12.dll
)复制到该目录下
9. 在odb-examples-2.4.0\c++11\x64\Release
目录下打开命令行,执行driver.exe -U <你的用户名> -P <你的密码> -d <数据库名>
10. 如果有错误产生,可能因为指定数据库里没有对应表格
12. 打开数据库,运行编译生成的SQL脚本employee.sql
,生成数据库表
14. 再次在命令行中执行driver.exe -U <你的用户名> -P <你的密码> -d <数据库名>
,返回运行结果
ODB库学习相关
【开源库学习】libodb库学习(一)
【开源库学习】libodb库学习(二)
【开源库学习】libodb库学习(三)
【开源库学习】libodb库学习(四)
【开源库学习】libodb库学习(五)
【开源库学习】libodb库学习(六)
【开源库学习】libodb库学习(七)
下载
libodb_vs2019_x64_release
libodb-mssql_vs2019_x64_release
libodb-qt_vs2019_x64_release
相关文章:
【开源库】libodb库编译及使用
前言 本文介绍windows平台下libodb库的编译及使用。 文末提供libodb-2.4.0编译好的msvc2019_64版本,可直接跳转自取 ODB库学习相关 【开源库学习】libodb库学习(一) 【开源库学习】libodb库学习(二) 【开源库学习】…...
电力需求预测挑战赛笔记 Task3 #Datawhale AI 夏令营
上文: 电力需求预测挑战赛笔记 Task2 #Datawhale AI 夏令营-CSDN博客文章浏览阅读80次。【代码】电力需求预测挑战赛笔记 Task2。https://blog.csdn.net/qq_23311271/article/details/140360632 前面我们介绍了如何使用经验模型以及常见的lightgbm决策树模型来解决…...
Promise 详解(原理篇)
目录 什么是 Promise 实现一个 Promise Promise 的声明 解决基本状态 添加 then 方法 解决异步实现 解决链式调用 完成 resolvePromise 函数 解决其他问题 添加 catch 方法 添加 finally 方法 添加 resolve、reject、race、all 等方法 如何验证我们的 Promise 是否…...
动态内存经典笔试题分析
目录 1.题目一 2.题目二 3.题目三 4.题目四 1.题目一 #include<stdlib.h> #include<stdio.h> #include<string.h> void GetMemory(char* p) {p (char*)malloc(100); } void Test(void) {char* str NULL;GetMemory(str);strcpy(str, "hello world…...
JS设计模式(一)单例模式
注释很详细,直接上代码 本文建立在已有JS面向对象基础的前提下,若无,请移步以下博客先行了解 JS面向对象(一)类与对象写法 特点和用途: 全局访问点:通过单例模式可以在整个应用程序中访问同一个…...
uniapp动态计算并设置元素高度
<template><view><scroll-view id"sv-box" :scroll-y"true" :style"{height:navHeightpx}"></scroll-view><view id"btn-box"><button>取消</button><button>确认</button><…...
直播架构如何设计核心节点和边缘节点
在直播架构中,核心节点和边缘节点的分工及主要服务是确保直播服务稳定、高效和可扩展的关键。以下是对这些节点的详细描述: 核心节点 核心节点通常位于数据中心,负责处理直播的主要逻辑和数据处理。其主要服务包括: 直播管理后…...
自动驾驶-预测概览
通过生成一条路径来预测一个物体的行为,在每一个时间段内,为每一辆汽车重新计算预测他们新生成的路径,这些预测路径为规划阶段做出决策提供了必要信息 预测路径有实时性的要求,预测模块能够学习新的行为。我们可以使用多源的数据…...
基于PSO算法优化PID参数的一些问题
目录 前言 Q1:惯性权重ω如何设置比较好?学习因子C1和C2如何设置? Q2:迭代速度边界设定一定能够遍历(/覆盖)整个PID参数二维空间范围吗?还是说需要与迭代次数相关?迭代次数越高&a…...
什么是决策树?
1. 什么是决策树? 决策树(Decision Tree)是一种常用的机器学习算法,用于解决分类和回归问题。它通过构建树结构来表示决策过程,分支节点表示特征选择,叶节点表示类别或回归值。 2. 决策树的组成部分 决策…...
ASP 快速参考
ASP 快速参考 概述 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于动态网页设计和开发。它允许开发者创建和运行动态交互性网页,如访问数据库、发送电子邮件等。ASP页面通常以.asp为文件扩展名,并…...
(二)原生js案例之数码时钟计时
原生js实现的数字时间上下切换显示时间的效果,有参考相关设计,思路比较难,代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…...
[CSS] 浮动布局的深入理解与应用
文章目录 浮动的简介元素浮动后的特点解决浮动产生的影响浮动后的影响解决浮动产生的影响 浮动相关属性实际应用示例示例1:图片与文字环绕示例2:多列布局示例3:响应式布局 总结 浮动布局是CSS中一种非常强大的布局方式,最初设计用…...
Linux云计算 |【第一阶段】ENGINEER-DAY2
主要内容: 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤: 1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】 2)选择2…...
9.11和9.9哪个大?
没问题 文心一言 通义千问...
学懂C语言(十二):C语言中的二进制原理及应用
目录 1. 二进制原理 1.1 什么是二进制? 1.2 如何在C语言中表示二进制? 2. 二进制的表示 2.1 二进制和其他进制的转换 2.2 C语言中的二进制表示 3. 二进制运算 3.1 位运算符 3.2 计算过程示例 4. 应用示例 4.1 使用位运算实现开关 5. 总结 C语…...
科研绘图系列:R语言雨云图(Raincloud plot)
介绍 雨云图(Raincloud plot)是一种数据可视化工具,它结合了多种数据展示方式,旨在提供对数据集的全面了解。雨云图通常包括以下几个部分: 密度图(Density plot):表示数据的分布情况,密度图的曲线可以展示数据在不同数值区间的密度。箱线图(Box plot):显示数据的中…...
优化教学流程和架构:构建高效学习环境的关键步骤
在教育领域,设计和优化教学流程和架构是提高学习效果和学生参与度的关键。本文将探讨如何通过合理的教学流程和有效的架构来构建一个高效的学习环境。 ### 1. 理解教学流程和架构的重要性 教学流程指的是教学活动的组织和顺序,而教学架构则是指支持教学…...
js | this 指向问题
https://juejin.cn/post/6844904083707396109 任何函数运行的时候,都会创建一个context对象,context对象有一个this对象,在运行的时候决定。任何函数都对应一个reference类结构体(具体叫啥有点忘了),简单就…...
《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》
《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…...
Gitee 使用教程1-SSH 公钥设置
一、生成 SSH 公钥 1、打开终端(Windows PowerShell 或 Git Bash),通过命令 ssh-keygen 生成 SSH Key: ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键(Enter) 2、查看生成的 SSH…...
理解Cookie、Session和Token
在现代Web开发中,用户身份认证和会话管理是至关重要的部分。理解Cookie、Session和Token的区别和应用场景,有助于我们设计出更加安全和高效的Web应用。本文将详细探讨这三者的工作原理、优缺点以及使用场景。 1. Cookie 1.1 什么是Cookie? …...
概率论原理精解【1】
文章目录 测度概述集类笛卡尔积定义例子 多集合的笛卡尔积定义计算方法注意事项 有限笛卡尔积的性质1. 定义2. 性质2.1 基数性质2.2 空集性质2.3 不满足交换律2.4 不满足结合律2.5 对并和交运算满足分配律 3. 示例4. 结论 参考链接 测度 概述 所谓测度,通俗的讲就…...
数据结构(二叉树-1)
文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …...
巴黎奥运会倒计时 一个非常不错的倒计时提醒
巴黎奥运会还有几天就要开幕了,大家应该到处都可以看到巴黎奥运会的倒计时,不管是电视上,还是网络里,一搜索奥运会,就会看到。倒计时其实是一个我们在生活中很常用的一个方法,用来做事情的提醒,…...
【Python】使用库 -- 详解
库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…...
Web3D:WebGL为什么在渲染性能上输给了WebGPU。
WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...
SpringBoot面试高频总结01
1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...
Linux 工作队列(Workqueue):概念与实现
目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...
前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法
文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...
武汉哪家网站建设公司好/最近重大新闻
题目链接地址: http://ac.jobdu.com/problem.php?pid1389 题目1389:变态跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2331解决:1332 题目描述: 一只青蛙一次可以跳上1…...
自己做网站出证书/网络热词2023流行语及解释
假设mysql安装目录为/opt/mysql查看编译选项的命令为 cat /opt/mysql/bin/mysqlbug | grep CONFIGURE_LINE另:可以使用mysql_config命令查看mysql的一些基本信息,如下--cflags [-I/usr/include/mysql -mcpui486 -fno-strength-reduce] --…...
WordPress支持熊掌号/百度官方优化软件
一个脚本可以使得本来要用键盘进行的相互式操作自动化。一个 Shell 脚本主要 由原本需要在命令行输入的命令组成, 或在一个文本编辑器中, 用户可以使用脚 本来把一些常用的操作组合成一组串行。 主要用来书写这种脚本的语言叫做脚本 语言。 很多脚本语言…...
做网站ui主要研究内容/正能量网站地址链接免费
使用小程序 自带的api my.getLocation 如果你用的模拟器的话 提起需要定义一个位置 my.getLocation({type:1, // 传入type 没有type 或者type0的情况下 是没有城市的success(res) {my.alert({title:你所在的城市是res.city});}})...
淘宝做网站/网络游戏推广平台
为了让美化上传文件框,设置了cursor:pointer;,然而不起作用,设置font-size:0,这样就可以了。转载于:https://www.cnblogs.com/mmykdbc/p/10531976.html...
驻马店网站开发/黄页88网推广服务
本人对播放器列表右边的灰色滚动条极为不满意,也影响到整个软件UI的协调性,遂下决心要重绘一个符合自己UI风格的滚动条. 查了很多资料,都找不到直接重写ListBox滚动条的方法,只能曲线救国,先自己重绘一个带皮肤的滚动条,然后让它取代ListBox现有的滚动条. 老习惯,先…...