当前位置:网站首页>动态库*.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、参考文献
边栏推荐
猜你喜欢
随机推荐
简单了解首个 EVM 等效的 zkEVM Polygon 为何全力押注
Docker install redis
智慧物联网源码 带组态物联网源码 工业物联网源码:支持传感器解析服务,数据实时采集和远程控制
Lake Shore—EMPX-H2 型低温探针台
Heartless sword English Chinese bilingual poem 006. to my wife
Eureka notes
Weisfeiler-Lehman图同构测试及其他
Leetcode-67. binary sum
[mysql] I. MySQL starts
面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
Compose canvas pie chart effect drawing
Solve data functions should return an object (property "visible" must be accessed with "$data.visible")
php文件锁抽奖防止并发
Visual analysis of real-time epidemic data
灰色预测(MATLAB)
How to set up the router correctly
Visualization of gross domestic product (GDP) data
keras——accuracy_score公式
死磕递归1:递推公式
IR drop, EM, noise and antenna









