【开源库】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等人提出的一种基于单个语言模型&…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...