【开源库】libodb库编译及使用

前言

本文介绍windows平台下libodb库的编译及使用。

文末提供libodb-2.4.0编译好的msvc2019_64版本,可直接跳转自取

ODB库学习相关

【开源库学习】libodb库学习(一)
【开源库学习】libodb库学习(二)
【开源库学习】libodb库学习(三)
【开源库学习】libodb库学习(四)
【开源库学习】libodb库学习(五)
【开源库学习】libodb库学习(六)
【开源库学习】libodb库学习(七)

libodb库

libodb 是一个开源、跨平台、跨数据库的对象关系映射(ORM)系统,可以持久化C++对象到关系数据库,而不必处理表、列或者SQL,无需手动编写任何映射代码。ODB支持MySQLSQLitePostgreSQLOracle和微软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

  1. 解压odb-2.4.0-i686-windows
  2. 添加bin目录到环境变量
  3. 命令行输入odb --version看是否安装成功在这里插入图片描述
    在这里插入图片描述

3.编译libodb

  1. 使用visual studio 2019打开libodb-2.4.0文件夹下libodb-vc12.sln文件,弹出的对话框点击确定。
  2. 在配置管理器里选择要配置的类型Debug/ReleaseWin32/x64
  3. Ctrl+B编译。
  4. 生成库文件在libodb-2.4.0/lib64目录下(以Release x64为例)。

4.编译libodb-mssql

  1. libodb-2.4.0文件夹下obdlib64文件夹拷贝至libodb-mssql-2.4.0文件夹。(未拷贝会生成失败报错)
  2. 使用visual studio 2019打开libodb-mssql-2.4.0文件夹下libodb-mssql-vc12.sln文件,弹出的对话框点击确定。(未升级到目标框架会生成失败报错)
  3. 在配置管理器里选择要配置的类型Debug/ReleaseWin32/x64
  4. 项目/属性/VC++目录/库目录中添加odb.lib所在的目录(编译libodb时的库生成目录,步骤一已拷贝至libodb-mssql-2.4.0文件夹下lib64目录)。(未添加正确库目录会生成失败报错)
  5. Ctrl+B编译。
  6. 生成库文件在libodb-mssql-2.4.0/lib64目录下(以Release x64为例)。
    在这里插入图片描述

5.编译libodb-qt

  1. libodb-mssql-2.4.0文件夹下obdlib64文件夹拷贝至libodb-qt-2.4.0文件夹。(未拷贝会生成失败报错)
  2. 使用visual studio 2019打开libodb-qt-2.4.0文件夹下libodb-qt-vc12.sln文件,弹出的对话框点击确定。(未升级到目标框架会生成失败报错)
  3. 在配置管理器里选择要配置的类型Debug/ReleaseWin32/x64
  4. 项目/属性/VC++目录/库目录中添加odb.lib,odb-mssql.lib所在的目录(编译libodb-mssql时的库生成目录,步骤一已拷贝至libodb-qt-2.4.0文件夹下lib64目录),添加Qt5Core.lib所在的目录(在qt的安装目录下)。(未添加正确库目录会生成失败报错)
  5. Ctrl+B编译。
  6. 生成库文件在libodb-qt-2.4.0/lib64目录下(以Release x64为例)。
    在这里插入图片描述

使用

  1. libodb-mssql-2.4.0文件夹下obdlib64文件夹拷贝至libodb-qt-2.4.0文件夹。(未拷贝会生成失败报错)

  2. 使用visual studio 2019打开odb-examples-2.4.0文件夹下examples-mssql-vc12.sln文件,弹出的对话框点击确定。(未升级到目标框架会生成失败报错)

  3. 在配置管理器里选择要配置的类型Debug/ReleaseWin32/x64

  4. 项目/属性/VC++目录/库目录中添加odb.lib,odb-mssql.lib所在的目录(编译libodb-mssql时的库生成目录,步骤一已拷贝至libodb-examples-2.4.0文件夹下lib64目录)(未添加正确库目录会生成失败报错)
    在这里插入图片描述

  5. 项目/属性/VC++目录/包含目录中添加odb文件夹所在的目录(步骤一已拷贝至libodb-mssql-2.4.0文件夹下,故此处为libodb-examples-2.4.0目录),包含libodb-examples/c++11目录 (未添加正确包含目录会生成失败报错)
    在这里插入图片描述

  6. 使用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.dllodb-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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30种图像动画特效算法(C#多线程版) - 好文要转

最近想做一个屏幕保护软件&#xff0c;需要图片切换效果&#xff0c;于是就找到这个博文&#xff0c;强烈推荐&#xff1a; https://blog.51cto.com/mengliao/473169 其中的源码包在此下载&#xff1a;https://download.csdn.net/download/lzhdim/89532212 效果如下&#xff1a…

Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?

目录 问题 systemd Docker Service 和 Socket 警告的原因 解决方法 问题 使用如下命令停止 Docker # systemctl stop docker 执行后报的时候报了一个 warning&#xff0c;如下 Warning: Stopping docker.service, but it can still be activated by:docker.socket 这时…

Unity | AssetBundle

1 定义 Unity中的一种特殊资源包格式&#xff0c;用于存储和分发游戏资源。这些资源可以包括模型、纹理、音频文件、预制体、场景等。 AssetBundle允许开发者在游戏运行时动态加载和卸载资源&#xff0c;从而实现灵活的资源管理。 2 使用场景 1、资源管理 有效管理游戏中的资…

Pycharm 安装与使用

PyCharm的安装与使用 一、什么是PyCharm PyCharm是由JetBrains开发的专业Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供智能代码补全、语法高亮和代码导航等编辑功能。它具有强大的调试工具和内置版本控制系统支持&#xff0c;方便代码管理和协作。PyCharm…

《小程序02:云开发之增删改查》

一、前置操作 // 一定要用这个符号包含里面的${}才会生效 wx.showToast({title: 获取数据成功&#xff1a;${colorLista}, })1.1&#xff1a;初始化介绍 **1、获取数据库引用&#xff1a;**在开始使用数据库 API 进行增删改查操作之前&#xff0c;需要先获取数据库的引用 cons…

ABAP:创建/修改成本中心

学习内容描述&#xff1a;利用SAP的标准BAPI创建/修改成本中心 业务参考文档&#xff1a;【SAP-CO】成本中心的创建、变更与删除_sap ks01 函数-CSDN博客 重点知识&#xff1a;标准BAPI的调用 1、创建&#xff1a;BAPI_COSTCENTER_CREATEMULTIPLE DATA: lt_costcenterlist TY…

<数据集>安全帽佩戴识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3912张 图片分辨率&#xff1a;640640 标注数量(xml文件个数)&#xff1a;3912 标注数量(txt文件个数)&#xff1a;3912 标注类别数&#xff1a;2 标注类别名称&#xff1a;[no-helmet, helmet] 序号类别名称图片…

在麒麟服务器 V10 SP3 上将 Redis 设置为开机自启

要在麒麟服务器 V10 SP3 上将 Redis 设置为开机自启&#xff0c;可以使用 systemd 来管理 Redis 服务。以下是详细步骤&#xff1a; 1、创建一个 systemd 服务单元文件&#xff1a; 首先&#xff0c;创建一个新的服务单元文件&#xff0c;例如 redis.service。 sudo nano /e…

刷题Day59|prim算法与kruskal算法:53. 寻宝

参考&#xff1a;代码随想录&#xff08;http://www.programmercarl.com&#xff09; 53. 寻宝 53. 寻宝&#xff08;第七期模拟笔试&#xff09; (kamacoder.com) prim算法思路&#xff1a; 第一步&#xff0c;选距离生成树最近的节点第二步&#xff0c;最近的节点加入生成…

机器学习——降维算法PCA和SVD(sklearn)

目录 一、基础认识 1. 介绍 2. 认识 “ 维度 ” &#xff08;1&#xff09;数组和Series &#xff08;2&#xff09;DataFrame 表 &#xff08;3&#xff09;图像 3. 降维思想 4. 降维步骤 二、降维算法&#xff08;PCA&#xff09; 1. PCA实现 &#xff08;1&#…

Library not found for -lstdc++.6.0.9

解决方案一 由于项目已经很多年了&#xff0c;前段时间更新了Xcode发现编译报错lstdc这个库很早以前就被舍弃了&#xff0c;但是一个项目的维护都随着解决bug堆砌出来的&#xff0c;这也导致了我们的项目走上了这条路。 比如 Library not found for -lstdc.6.0.9 报的错&#x…

java转义文本中的HTML字符为安全的字

java转义文本中的HTML字符为安全的字 &#xff0c;以下字符被转义&#xff1a;替换为 (&apos; doesnt work in HTML4) " 替换为 &quot; & 替换为 &amp; < 替换为 < > 替换为 >1.先添加hutool依赖到pom <dependency><groupId>cn…

Python标准库学习之operator.itemgetter函数

Python标准库学习之operator.itemgetter函数 一、简介 operator.itemgetter 是 Python 标准库 operator 模块中的一个函数。它主要用于获取可迭代对象中的特定元素&#xff0c;常用于排序操作。这个函数返回一个可调用对象&#xff0c;可以方便地从序列或映射中获取指定的项。…

VSCode部署Pytorch机器学习框架使用Anaconda(Window版)

目录 1. 配置Anaconda1.1下载安装包1. Anaconda官网下载2, 安装Anaconda 1.2 创建虚拟环境1.3 常用命令Conda 命令调试和日常维护 1.4 可能遇到的问题执行上述步骤后虚拟环境仍在C盘 2. 配置cuda2.1 查看显卡支持的cuda版本2.2 下载对应cuda版本2.3 下载对应的pytorch可能出现的…

简单创建基于Go1.19的站点模板爬虫

在Go 1.19版本中&#xff0c;创建一个站点模板爬虫可以使用goquery库来解析HTML并抓取所需的数据。以下是一个基本的爬虫示例&#xff0c;它展示了如何使用goquery来抓取网页上的信息&#xff1a; 安装依赖库&#xff1a; 首先&#xff0c;确保你已经安装了goquery库。如果还…

【数据结构】二叉树OJ题_对称二叉树_另一棵的子树

对称二叉树 题目 101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2…

【ECharts】使用 ECharts 处理不同时间节点的数据系列展示

使用 ECharts 处理不同时间节点的数据系列展示 在数据可视化中&#xff0c;我们经常遇到这样的问题&#xff1a;不同数据系列的数据点在时间轴上并不对齐。这种情况下&#xff0c;如果直接在 ECharts 中展示&#xff0c;图表可能会出现混乱或不准确。本文将通过一个示例代码&a…

C#与C++交互开发系列(四):使用C++/CLI进行互操作

欢迎来到C#与C交互开发系列的第四篇。在这篇博客中&#xff0c;我们将深入探讨使用C/CLI进行互操作的方法和技巧。C/CLI&#xff08;Common Language Infrastructure&#xff09;是C与.NET框架之间的桥梁&#xff0c;能够让C代码与托管代码无缝集成。 4.1 什么是C/CLI&#xf…

【源码阅读】Sony的go breaker熔断器源码探究

文章目录 背景源码分析总结 背景 在微服务时代&#xff0c;服务和服务之间调用、跨部门调用都是很常见的事&#xff0c;但这些调用都存在很多不确定因素&#xff0c;如核心服务A依赖的部门B服务挂掉了&#xff0c;那么A本身的功能将会受到直接的影响&#xff0c;而这些都会影响…

【阿里OSS文件上传】SpringBoot实现阿里OSS对象上传

1. YAML配置阿里OSS属性 alioss:endpoint: oss-cn-beijing.aliyuncs.comaccess-key-id: L***eaccess-key-secret: j***Xbucket-name: c***i2. 设置对象保存OSS属性 注册为Component方便后续直接调用。 import lombok.Data; import org.springframework.boot.context.properti…