VS2017 设置 dll 目录

VS2017 设置 dll 目录

前言

  C++ 中有静态库和动态库。在 windows 系统中,静态库文件后缀名为 .lib,一般保存在 lib 文件夹里;而动态文件分为两部分:以 .lib 为后缀的引入库或导入库文件,一般存放于 lib 文件夹;以 .dll 为后缀的动态库文件(这样称呼不知道是否合适),一般存放于 bin 文件夹。
  在开发过程中,配置第三方库涉及到头文件(.h后缀),lib文件和 dll 文件(只有静态库情况下应该涉及不到 dll 文件,以下假设存在 dll 文件说明)。
  在 visual studio 开发工具中,大致有两种开发模式:debug 模式和 release 模式,对于这两种模式,头文件和 lib 文件是不做区分的,而 dll 一般情况下需要做区分,即 debug 模式下使用 debug 模式的 dll 文件(相应的需要有 pdb 文件),release 模式下使用 release 模式的 dll 文件。一般情况下我们只有 dll 模式的文件,除非我们能够拿到第三方库源代码进行 debug 和 release 模式的编译。
  visual studio 解决方案和项目需要分清,一个解决方案可以包含多个项目。

配置

  这里项目只有两种模式:debug|x64release|x64
  第三方库为 vtk,项目为 qt5 项目。
  vtk 经过编译和 install 后,我们得到四个文件夹如下表:

文件夹说明
include存放 .h 文件
lib存放 .lib 文件
bin\debug存放 .dll 文件,对应 vtk debug 编译
bin\release存放 .dll 文件,对应 vtk release 编译

  下面的操作需要在 属性管理器(Property Manager) 里进行。在该界面属性按项目分组,这里只有项目QtWADemo,该项目存在两种模式:Debug | x64,Release | x64,不同模式下有各自的属性文件。其中 Qt 是 创建 Qt 项目后存在的属性文件,vtk 是为了配置 vtk 库新建的属性文件。当然后边对 vtk 的操作也可以在 Qt 或 Microsoft.Cpp.x64.user 上进行,但是个人不建议这样做。
在这里插入图片描述
  新建 vtk 属性文件的操作如下:对 Debug | x64 右键,点击菜单第一行,看到如下界面。可以重命名,选择保存位置(这里保存在项目目录里的 props\debug 文件里(新建))。同样的,对 Release | x64 右键,点击菜单第一行,重命名和选择保存位置(这里保存在项目目录里的 props\release 文件夹里)。

在这里插入图片描述

1. 添加头文件目录

  双击 Debug | x64 里的 vtk,或者右键它选择 属性(properties)
  VC++ 目录 → \rightarrow 包含目录(VC++ directories → \rightarrow include directories),点击右侧下箭头选择编辑(edit)
  把 include 文件夹的 绝对路径 添加进去,点击 确定(ok)
  (这里先不理 $(vtk_root),它是在 vtk 中添加的自定义宏,关于自定义宏最后会说明,这里只需要把绝对路径加进去就行)
  Release | x64 的 vtk 也是同样的操作,这里不再重复,可以先在 Debug | x64 里搞完以下步骤,再操作 Release | x64。
在这里插入图片描述

3. 添加 lib 文件目录

  步骤2界面不要退出
  VC++ 目录 → \rightarrow 库目录(VC++ directories → \rightarrow library directories),点击右侧下箭头选择编辑(edit)
  把 lib 文件夹的绝对路径添加进去,点击确定(ok)
   Release | x64 同样。
在这里插入图片描述

4. 设置链接

  步骤3界面不退出
  链接器 → \rightarrow 输入 → \rightarrow 附加依赖(Linker → \rightarrow Input → \rightarrow Addictional Depedences) ,把 lib 文件夹里的所有 lib 文件名添加进去。
  点击 确定(ok)
   Release | x64 同样。
在这里插入图片描述

  获取所有 lib 文件名的 python 代码如下。

import os
dir_path = 'C:\\_cmake\\ext\\vtk\\lib'
for root, dirs, files in os.walk(dir_path):
    for file in files:
        if file.endswith('.lib'):
            print(file)

    break

5. 添加 dll 目录

  (终于到这一步了,其实以上都不是我想说的,重点是 dll 目录这块,网上没有找到详尽的解释,这也是这篇文章的重点)
  这里涉及到环境变量 PATH。程序运行是如果想链接 dll 文件,会从 PATH 里的所有文件夹里去查找(这是我的理解),但是这样对于开发不友好,不能做到程序独立,程序可能不会从我们期望的文件夹里查找需要的 dll 文件。
  vs 中解决 找不到 dll 文件的方案至少有 4 钟,参见 vs2017 中指定存放dll目录的几种方法

  个人偏爱第四种,具体步骤如下:
  双击 Debug | x64
  可以看到界面与 vtk 的属性界面不同,第二行是 调试(debugging)
  修改 环境(Environment) 内容。首先,我们需要 取消勾选 最后一行的继承(Inherit);然后,修改第一个框里边的内容为 PATH=%PATH%;文件夹1;文件夹2; 修改完之后需要保证第二个框里面的值必须是一个 PATH=。。。 的形式,保存。
  原理上就是修改该项目使用的 PATH 环境变量的值,指向我们期望的目录,由于我们取消了继承,要注意项目自己添加的目录也要包含在 PATH 里,具体可以观察图片里的内容。这部分需要了解环境变量的相关知识:分号是分隔不同文件夹的。%PATH%是PATH原来的值,类似于 a = a + b。
  一般情况下,Release | x64 中 dll 目录与 Debug | x64 中 dll 目录不同。
在这里插入图片描述

后言

  关于属性文件中的自定义宏(Macros),如果打开属性文件的属性界面,可以看到用户宏(User Macros) 字样,这里可以添加自定义宏。注意宏的作用范围。
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值