Visual Studio工程调用第三方库时Debug和Release模式的冲突问题

常用工具 专栏收录该内容
14 篇文章 0 订阅

Visual Studio工程调用第三方库时Debug和Release模式的冲突问题

Debug模型和Release模式区别

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release:Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

出现报错的原因

我使用Qt和VTK 8.0.1开发项目,按照惯例在属性管理器中配置好Debug/Release版本的include路径,lib路径和lib输入项,在环境变量中添加bin路径。Debug模式下可以正常运行,但是Release模式下报错:

仔细看可以发现,Program链接的dll是Qt5Cored.dll,而Release版本下的dll结尾是不加d的,也就是应该为Qt5Core.dll。这里补充一下,我使用了一个名叫QVtkOpenGLWidget的控件,它的作用是将VTK的渲染窗口显示到QT的组件中。因为VTK的dll路径不对,导致调用的Qt链接文件也不对了。

即使我在环境变量中添加了Debug和Release的bin目录,但是程序仍会默认链接Debug版本的库。

解决方法

这时我们需要手动在VS中配置Release下的环境,让工程运行时能够调用正确的库,避免出错。

首先,打开调试(你的工程名)调试属性

环境中,取消父级或项目默认设置继承,并手动输入你的环境路径。

输入的格式为

PATH=PATH1;PATH2;PATH3;...%PATH%

路径中需要把继承的路径和自己第三方库的bin路径都包括起来。
比如在我这边,继承的是QtDllPath,通过宏查找知道了在计算机下的绝对路径E:/Softwares/qt/5.14.2/msvc2017_64/bin,那么就写在PATH1中,然后在PATH2上写VTK Release版本下的bin路径,然后点击确定即可。

PATH=E:/Softwares/qt/5.14.2/msvc2017_64/bin;E:\Tools\VTK-2019\VTK-8.0.1-install-Release\bin;%PATH%

在继承值多的情况下可以使用宏路径简洁表达,但是绝对路径是不容易出错的。
在这里插入图片描述

  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值