当前位置:网站首页>动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?
动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?
2022-07-23 14:13:00 【libaineu2004】
1、现象:
使用一些第三方的dll,比如opencv,会分别生成debug和release的dll,在exe中必须要引用指定版本的dll,不能混用,否则会出错;
但是还有一些第三方的dll,比如halcon,只提供给用户release的dll,用户的debug版和release版的exe都可以引用此dll。
如此看来,是有些dll可以混用(交叉引用),有些不可以,两者为什么会存在差异?
2、原因
比如debug的exe调用release编译生成的dll,接口函数的参数如果使用std::vector或者std::string之类的东西,肯定会崩。因为stl在release和debug下实现不同。std::string在debug和release环境中的内存大小是不一致的。 如果混用,会出现内存奔溃现象。
3、结论
不含stl库的debug动态库和release动态库在debug或release项目中都可以使用;
含有stl的debug动态库和release动态库在项目中不能混用,debug项目必须用debug库, release 项目必须用release库 ;
内存谁分配谁释放,动态库导出函数不要用stl,仅使用基本类型或接口;
4、参考文献
边栏推荐
猜你喜欢

JMeter之函数二次开发/插件开发(细版)

PMP每日一练 | 考试不迷路-7.23

零基础怎么自学软件测试?十年测试老鸟最强软件测试学习路线图

keil错误和解决办法(1):FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘

微信小程序wx.hideLoading()会关闭toast提示框

Acquisition of positional reliability in accurate target detection

SSD: Single Shot MultiBox Detector

YOLOV7

ROS2自学笔记:Rviz可视化工具

Tensorflow2.x actual combat series softmax function
随机推荐
Shell | 查看进程的方法的不完全总结
PMP每日一练 | 考试不迷路-7.23
Tensorflow2.x actual combat series softmax function
C语言基础篇 —— 2-4 指针的数据类型含义和强制类型转换的解析
死磕遞歸1:遞推公式
PWN entry (3) heap
[mysql] I. MySQL starts
Is it safe for online account managers to open accounts when choosing securities companies in flush
Scale Match for Tiny Person Detection
使用BoundsChecker「建议收藏」
Notes on Microcomputer Principle and technical interface
软件测试计划包括哪些内容,测试计划如何编写。分享测试计划模板
SSD: Single Shot MultiBox Detector
微信小程序class绑定,怎么绑定2个变量
js如果小数是0就减去,不是就保留
OpenIM重大升级-群聊读扩散模型发布 群管理功能升级
IDEA中给项目添加依赖的jar包
sprintf和cv::putText
[30. N-queen problem]
Object.defineproperty method, data agent