C++动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?

2023-05-16

1、现象:

使用一些第三方的dll,比如opencv,会分别生成debug和release的dll,在exe中必须要引用指定版本的dll,不能混用,否则会出错;同样的道理,jsoncpp库也是。

但是还有一些第三方的dll,比如halcon,只提供给用户release的dll,用户的debug版和release版的exe都可以引用此dll。

如此看来,是有些dll可以混用(交叉引用),有些不可以,两者为什么会存在差异?

2、原因

比如debug的exe调用release编译生成的dll,接口函数的参数如果使用std::vector或者std::string之类的东西,肯定会崩。因为stl在debug和release下实现不同。std::string在debug和release环境中的内存大小是不一致的。 如果混用,编译可以通过,但是exe运行时会出现内存奔溃现象。cv::InputArray也是同样的道理,库混用的话,还没等到exe运行,而是编译就出错。

 所以opencv和jsoncpp等等的第三方库,必须严格区分debug和release。

3、结论

不含stl库的debug动态库和release动态库在debug或release项目中都可以使用;

含有stl的debug动态库和release动态库在项目中不能混用,debug项目必须用debug库, release 项目必须用release库 ;

内存谁分配谁释放,动态库导出函数不要用stl,仅使用基本类型或接口;

4、姊妹篇

DLL的灾难 --- DEBUG与RELEASE版本不能交叉调用_libaineu2004的博客-CSDN博客

5、参考文献

dll在debug和release模式下如何交叉引用? - 知乎

封装库: c/c++ debug版本库 和 release 版本库 互用问题_XHW___001的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)? 的相关文章

  • vivi源代码最为详细分析(三)

    step 5 xff1a MTD设备初始化 关于什么是MTD xff0c 为什么要使用MTD xff0c MTD技术的架构是什么 xff0c 等等 xff0c 可以参考 Linux MTD源代码分析 xff08 作者 xff1a Jim Z
  • 【笔记】docker-compose.yml 文件更改后重新启动加载更改后的内容

    docker compose yml 文件更改后想使之立刻生效 xff0c 但是不想手动删除已经建立的 container 等信息可以运行下面命令 重新创建容器实现修改 docker compose up force recreate d
  • bootloader开发阶段总结以及可能会碰到的问题

    到今天 xff0c vivi源代码基本分析完毕 对bootloader有了更深层的认识 在此期间 xff0c 仔细阅读了毛德操 胡希明先生编著的 嵌入式系统 采用公开源代码和StrongARM XScale处理器 第七章 xff1a 嵌入式
  • 用模式一实现用户登录功能

    login jsp为显示登录表单和处理登录请求的页面 xff0c 登录成功后跳转到logonSuccess jsp页面 xff0c 登录失败时重新显示登录表单和失败的帮助信息 xff0c 以便用户重新登录 xff1b 如果已登录用户再次访问
  • UDP通信 (C语言实现)

    直接看代码吧 v乛 乛 udp server c 文件信息 文 件 名 udp server c 创 建 人 文件创建日期 年 月 日 描 述 UDP 回射服务器程序
  • jni中使用extern "C"的原因

    首先 cplusplus这个宏是微软自定义宏 xff0c 大小是个整数 xff1a cplusplus This macro is defined when the C 43 43 compiler is in use You can us
  • VmWare虚拟机设置ubuntu和windows之间的共享文件夹

    一般在进行编程作业的时候 xff0c 我们会采用 开发在Windows中编辑源代码 xff0c 在linux中编译 执行源代码 这往往需要需要将在Windows下编辑好的源代码上传到linux系统种进行编译 怎么来进行上传呢 xff1f 其
  • C++的最后一道坎|百万年薪的程序员

    导语 C 43 43 的起源可以追溯到 40 年前 xff0c 但它仍然是当今使用最广泛的编程语言之一 xff0c C 43 43 发明人Bjarne Stroustrup 一开始没想到 C 43 43 会获得如此大的成功 xff0c 他说
  • Modbus 协议

    1 主站 xff1a 可以进行读写操作 从站 xff1a 只能被动响应主站操作 2 一个 Modbus 网络只有一个主站 xff0c 可以多个从站 xff08 主站不用连在两端 xff09 485 通讯 1 接线 最多 254 个站 xff
  • 数据结构对齐

    xfeff xfeff 对齐的算法 xff1a 由于各个平台和编译器的不同 xff0c 现以本人使用的gcc version 3 2 2编译器 xff08 32位x86平台 xff09 为例子 xff0c 来讨论编译器对struct数据结构
  • 关于示波器测485串口波特率的使用方法总结

    之前没有用过示波器 xff0c 更不知道怎么来测试串口的波特率 xff0c 结果遇到一客户说我们产品的波特率达不到9600 xff0c 只有9100 xff0c 为了验证这一说法 xff0c 我们只能自己测试一下 说明 xff1a 产品通过
  • C语言对寄存器封装

    一 封装外设 用C语言代码把外设地址映射用宏定义封装 span class hljs comment 外设基地址 span span class hljs preprocessor define PERIPH BASE unsigned i
  • JavaJDK下载安装与环境配置(Windows 10 超详细的图文版教程 )

    前言 xff1a 对于很多初学者来说 xff0c 我想可能很多人都会遇到JDK环境变量的配置问题 明明就是按照度娘上的教程去一步步配置的 xff0c 但还是会有很多的人出现配置不成功的问题 所以今天在这里分享一下windows 10 系统下
  • win32 获取窗口句柄的方法

    第一种方法是根据窗口句柄值获取窗口句柄 使用spy 43 43 获取指定窗口的窗口句柄值 xff0c 因为句柄值是16进制数 xff0c 所以前面加0x 然后进行强制转换为HWND类型 HWND hWnd 61 HWND 0x0028072
  • 当设置display:inline;时li的宽度无效的解决方法

    若制作导航栏时 xff0c 使用列表li 的定义时 xff0c 若想加上一个背景图 xff0c 这时候若定义li的一个属性为 li display inline width 83px height 30px xff0c 则浏览器会无视后面的
  • js文本框或者按钮鼠标悬停提示说明文字

    html页面中很多元素会用到文本提示 xff0c 当鼠标悬停之后显示一段说明文字 显示说明性文字 function tips id str t 61 getTop document getElementById id document ge
  • localstorage兼容ie8以下浏览器的问题

    最近在做一个网站 xff0c 由于希望尽可能减小服务器的压力 xff0c 也想提高网站的运转速度 xff0c 就想尽可能少的在服务器上读写数据以及下载重复数据 xff0c 需要重复使用的数据 xff0c 就储存在本地 xff0c 能在本地进
  • HTTP请求返回状态码中301与302的状态码区别

    一 xff0e 官方说法 301 xff0c 302 都是HTTP状态的编码 xff0c 都代表着某个URL发生了转移 xff0c 不同之处在于 xff1a 301 redirect 301 代表永久性转移 Permanently Move
  • java防止 csrf 攻击 --- 采用 spring .

    CSRF xff08 Cross site request forgery xff09 xff0c 中文名称 xff1a 跨站请求伪造 xff0c 也被称为 xff1a one click attack session riding xff
  • Gson解析数组多类型元素

    why used gson Gson is a Java library that can be used to convert Java Objects into their JSON representation It can also

随机推荐

  • js中获取时间new Date()详细介绍

    1 var myDate 61 new Date Date 返回当日的日期和时间 getDate 从 Date 对象返回一个月中的某一天 1 31 getDay 从 Date 对象返回一周中的某一天 0 6 getMonth 从 Date
  • 如何让一个行内元素(如一张图片)在div中居中

    xff08 1 xff09 第一种 xff1a 用vertical align lt div class 61 34 method1 34 gt lt span class 61 34 tiptop 34 gt lt span gt lt
  • 释放webpack tree-shaking潜力之webpack-deep-scope-analysis-plugin

    在上周末广州举办的 feday 中 webpack 的核心开发者 Sean 在介绍 webpack 插件系统原理时 隆重介绍了一个中国学生于 Google 夏令营 在导师 Tobias 带领下写的一个 webpack 插件 https gi
  • iframe跨域通信的通用解决方案

    此方案已有新版本 请查看 iframe跨域通信的通用解决方案 第二弹 xff08 终极解决方案 xff09 本文章可做技术学习供继续交流 一 背景 在这个Web页面越来越丰富的时代 xff0c 页面通过iframe嵌入其他的页面也越来越常见
  • C++实现轻量级RPC分布式网络通信框架

    前言 xff1a 2022 4 14更新 xff1a 在我重新回顾这篇文章的时候 xff0c 我觉得里面内容有点乱 xff0c 主要还是因为RPC里面涉及到很多概念和知识点 本来代码内容就已经挺抽象了 xff0c 还要结合各种概念 xff0
  • 浅谈JavaScript设计模式

    创建型模式 xff1a 该模式处理的是用于创建对象的各种机制 工厂方法抽象工厂建造者原型单例 结构型模式 xff1a 考虑的是对象的组成以及对象彼此之间的关系 适配器桥接组合装饰器外观享元代理 行为型模式 xff1a 关注的是对象之间的依赖
  • Ardupilot-SITL仿真模拟调试

    1 配置SITL仿真调试 span class token punctuation span span class token operator span waf configure span class token operator sp
  • PX4——Range Finder 篇

    Range Finder 此处选用的是 Benewake 下的 Lidar 参数设置 General Configuration 除了官方的参数设置外 xff0c 我在 EKF2 中还找到了 EKF2 RNG AID 参数 xff0c 用来
  • STM32 时钟 定时器基础

    STM32 Clock Tree 时钟源 HSI xff1a xff08 High Speed Internal xff09 内部的 RC 震荡电路产生时钟信号 HSE xff1a xff08 High Speed External xff
  • Albumentation

    文章目录 AlbumentationClassificationSegmentationDetectionKeyPoints Augmentation Albumentation 所有实现的变换 变换以及支持的类型 此处 Classific
  • Pytorch 分布式训练

    文章目录 分布式训练OverviewDP or DDPDPDDP TCP 初始化Moco TCP 初始化例子 ENV 初始化可选后端进程间通信操作Template 区分概念 xff1a Machine vs Device 多机 Machin
  • FLANN C++ 使用

    FLANN FLANN 库 xff0c 包含 KNN 算法 众多工程 xff08 例如 OpenCV xff09 使用了 FLANN xff0c 这里单独介绍这个库 xff0c 方便以后单独使用 由官方 Latex 编译的文档链接 xff0
  • HDF5 C++ 使用

    HDF5 简介 HDF5 可以用来存储异构数据对象 xff0c 包括图片 xff0c 表 xff0c 图 xff0c 甚至 PDF 和 Excel HDF5 中的数据存储在不同组 Group 中 xff0c 类似于 Linux 文件树结构
  • Pandoc 使用

    文章目录 PandocInstallationLatex 到 Word命令详解 Pandoc Installation MacOS brew span class token function install span pandoc Lat
  • Docker -- DockerFile 讲解

    文章目录 DockerFile 指令讲解FROMCOPY 写在开头 xff1a 实验室给的电脑只能装 20 04 然后跑仿真需要在 18 04 20 04 的 Gazebo 居然不能支持 xff01 要是有人知道如何在 20 04 中使用
  • MySQL介绍及CRUD操作。

    目录 一 基本介绍 1 数据库结构 2 数据库增删改查 二 增删改查语句 1 insert 添加数据 2 update 修改操作 3 delete 删除操作 4 select 查询操作 5 加密和系统函数 6 流程控制函数 三 表的增删改查
  • Docker 容器

    文章目录 容器图形界面XserverVNC 容器 图形界面 Xserver 采用 ROS 官网的教程 这里相当于是将容器的图形信息发送给宿主的 Xserver 然后显示在你的电脑屏幕上 首先需要打开主机 Xserver 权限 xff1a x
  • C++ -- OpenMP 笔记

    64 toc OMP CMake Setup set CMAKE CXX STANDARD 14 set CMAKE CXX STANDARD REQUIRED ON find package OpenMP REQUIRED Set Fla
  • 转载:亚像素数值极值检测算法总结

    动机 在计算机视觉领域 xff0c 经常需要检测极值位置 xff0c 比如SIFT关键点检测 模板匹配获得最大响应位置 统计直方图峰值位置 边缘检测等等 xff0c 有时只需要像素精度就可以 xff0c 有时则需要亚像素精度 本文尝试总结几
  • C++动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?

    1 现象 xff1a 使用一些第三方的dll xff0c 比如opencv xff0c 会分别生成debug和release的dll xff0c 在exe中必须要引用指定版本的dll xff0c 不能混用 xff0c 否则会出错 xff1b