【开源库】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等人提出的一种基于单个语言模型&…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...