配置第三方库如Opencv,或者软件开发商提供的SDK时,一般需要配置三个文件:

头文件(.h),引入库(.lib)文件(也称“导入库文件”),动态链接库(.dll)文件

下面以度申科技的相机sdk配置为例,简述一下这三个文件的配置方法。

在开发过程中笔者参考了几篇博客,最后在厂商技术人员的帮助下,终于弄清楚了第三方库的配置方法,在此表示感谢。

参考文章:

静态库和动态库的区别,lib文件和dll文件的配置方法_Sean_新浪博客 http://blog.sina.com.cn/s/blog_6dd65c6f0100vveq.html

VS2005 使用/导入lib 、 dll库 - pacewalker的专栏 - CSDN博客 http://blog.csdn.net/pacewalker/article/details/7236701

关于属性表可参考下面文章:

OpenCV在Visual Studio中的属性表配置方法(通用)_百度文库 https://wenku.baidu.com/view/4eb66733ba0d4a7303763a18.html

1.配置头文件的方法

1)在属性表中添加附加包含目录绝对路径。

2)在属性表中添加附加包含目录相对路径

上图中的路径是SDK的安装路径,即绝对路径,如果想一劳永逸,比如想让这个项目文件夹拷贝到其他没有装SDK的机器上仍能够运行,就把.h文件直接拷贝到项目路径下。这时候就要设置头文件的相对路径,来个例子:

头文件目录如下:

属性表中设置的相对路径如下:

VS会在项目路径下搜索include文件夹,之后按照配置的相对路径就能找到头文件。

3)在项目头文件中直接用include语句引入,无需配置属性表

绝对路径表示如下:

相对路径表示如下:

#include "../../../library/Visual C++/include/DVPCamera.h"

其中一个"..\"表示一个上一阶目录,有三个"..\"表示当前目录再往前三个目录,所以他的意思就是调用当前目录再往前三个目录下的inclued文件夹中的头文件。头文件实际的路径是

D:\Program Files (x86)\DVP2 SDK\library\Visual C++\include

项目目录为

D:\Program Files (x86)\DVP2 SDK\Sample\VC++\MultipleCamera

因此从MultiCamera向上三层是DVP2 SDK,所以从DVP2 SDK目录下的library中层层向下找到目标头文件。这种写法是因为sdk会被安装到那个目录下是不确定的,但是sdk目录之间的层级关系是固定的。

下面的情况相对路径可表示为(MultiCamera为项目目录):

#include "include/subdirectory/DVPCamera.h"

也可以写作

#include "include\subdirectory\DVPCamera.h"

实际测试发现include语句中‘\’和‘/’没有区别,都能通过编译。

2、引入库.lib文件配置方案

与头文件配置类似,引入库也分相对路径和绝对路径。

1)在属性表中添加附加库目录和库文件名称

绝对路径:

相对路径:

其中一个"..\"表示一个上一阶目录。

添加lib文件名:

在链接器-输入-附加依赖项中添加文件名即可。

2)在项目cpp文件中直接用#pragma comment语句引入,无需配置属性表

使用语句添加引入库的好处就是无需配置多个属性表,

不管是debug模式还是release模式,不管是64位还是32位,几行代码通吃。

相对路径:

#ifdef _M_X64
#pragma comment(lib, "../../../VC++/DVPCamera64.lib")
#else
#pragma comment(lib, "../../../VC++/DVPCamera32.lib")
#endif

绝对路径:

#ifdef _M_X64
#pragma comment(lib, "D:/Program Files (x86)/DVP2 SDK/library/Visual C++/lib/x64/DVPCamera64.lib")
#else
#pragma comment(lib, "D:/Program Files (x86)/DVP2 SDK/library/Visual C++/lib/x86/DVPCamera.lib")
#endif

此处注意,直接从地址栏复制的路径中分隔符是‘\’,而comment指令中的分隔符是‘/’,需要做一下修改,否则会报错。

或者也可以用‘\\’,即

#pragma comment(lib, "D:\\Program Files (x86)\\DVP2 SDK\\library\\Visual C++\\lib\\x64\\DVPCamera64.lib")

另外,如果你使用了#pragma comment 语句,记住把属性表里的配置项删除掉。

如果使用了#pragma comment 语句,但是属性表里lib库只给了文件名而配置给库路径,也会报错。

两者是在编译链接时系统都会查找的,任何一个有问题就会报错。

3、动态链接库文件

根据文章:

静态库和动态库的区别,lib文件和dll文件的配置方法_Sean_新浪博客 http://blog.sina.com.cn/s/blog_6dd65c6f0100vveq.html

在程序运行时系统会自动搜索相应的dll文件,搜索的顺序依次分别为:
1、程序的执行目录(exe目录)
例如:F:\VC++\SourceCode\Lesson19\Dll1\Dll1\debug
1、当前目录;
例如:F:\VC++\SourceCode\Lesson19\Dll1\Dll1
2、系统目录;
依次是:C:\WINDOWS\system32;C:\WINDOWS\system;C:\WINDOWS
3、path环境变量中所列出的路径。

最稳妥的方式就是把dll文件放到项目目录Debug或Release文件夹下,而且不能有子目录。下面这种方式就是把dll文件放到子目录下,结果会报错。

否则会报错如下:

各种方法配置 Visual Studio 第三方库的更多相关文章

  1. Visual Studio 开发(一):安装配置Visual Studio Code

    一.为何使用Visual Studio Code 在学习音视频开发的时候,使用到了C和C++,在回顾复习C和C++的知识的时候,需要编写一些代码来加强理解. 虽然,有在线的语言编辑工具https:// ...

  2. 上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)

    一.使用苹果原生的方法 1.下拉刷新 2.上拉刷新 (1 首先要新建一个footer得XIB文件,当然同时包括对应的控制器文件,例如在XIB文件中可以如下拖拉对应的控件 (2 然后在代码文件中写一个实 ...

  3. 配置 Visual Studio Tools for Apache Cordova

    原文:配置 Visual Studio Tools for Apache Cordova 1.连接地址 https://msdn.microsoft.com/zh-cn/library/vs/alm/ ...

  4. 可移植的配置visual studio工程第三方库

    现在编程有太多的好用的第三方库,例如 计算机视觉方面的opencv c++的扩充库boost 特殊的第三方库,相机库,通讯库等 使用这些库给我们带来了极大的便利,同时也有很多困扰.这个工程在我电脑上明 ...

  5. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  6. .net转PHP从零开始-配置visual studio 2013 PHP开发环境php for visual studio

    作为一个.net开发者,一直在visual studio这款强大的编辑器宠爱下,其他编辑器都不会用,也用着不熟练.最近这不是转php吗,使用php编辑器很不爽,觉得还是用visual studio舒服 ...

  7. visual studio 添加库文件

    我在visual studio中使用OpenGL时需要添加额外的库 一 首先下载库文件,里面将会有一些.h文件和.lib文件,打开visual studio安装目录下打开: D:\program\VS ...

  8. 如何配置visual studio 2013进行负载测试-万事开头难

    声明:工作比较忙,文章写得不好,有时间再整理. 起因:最近众包平台因迁移到azure之后一直有网站慢的情况,让老板挨批了,但是测试环境一切正常,而且生产环境也没发现有卡顿和慢的情况,所以干脆来一次负载 ...

  9. 配置Visual Studio Code在Mac上作为.NET Core的IDE

    通过邮件发一文档测试一下. 关于Visual Studio Core 官网:https://www.visualstudio.com/en-us/products/code-vs.aspx 安装 也是 ...

随机推荐

  1. 安装Ubuntu后一些准备

    一些基础 安装的时候,先不选镜像就可以避开简易安装. 更改root密码:sudo passwd root 更改源,更新,不行就打断在更新 安装vim 改为unity模式,安装VMware Tools, ...

  2. python的协程和异步io【select|poll|epoll】

    协程又叫做微线程,协程是一种用户态的轻量级的线程,操作系统根本就不知道协程的存在,完全由用户来控制,协程拥有自己的的寄存器的上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来后, ...

  3. VS IIS 注册 以及IIS浏览提示无权限访问

    VS2008 IIS重新注册2008-11-21 9:06无法显示XML页--名称以无效字符开头2008-10-17 15:19无法显示XML页--名称以无效字符开头.iis处理资源时出错的解决办法2 ...

  4. [leetcode]238. Product of Array Except Self除了自身以外的数组元素乘积

    Given an array nums of n integers where n > 1,  return an array output such that output[i] is equ ...

  5. VINS-mono详细解读

    VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono ...

  6. Spring框架的事务管理的基本概念

    1. 事务:指的是逻辑上一组操作,组成这个事务的各个执行单元,要么一起成功,要么一起失败! 2. 事务的特性 * 原子性 * 一致性 * 隔离性 * 持久性 3. 如果不考虑隔离性,引发安全性问题 * ...

  7. Halcon的一维条码解码步骤和解码技巧

    一.图像预处理和条码增强 对比度太低:scale_image(或使用外部程序scale_image_range),增强图像的对比度. 图像模糊:emphasize锐化图像,使条码看起来更清晰. 深色背 ...

  8. bzr: ERROR: These branches have diverged. Use the missing command to see how.

    这个错误是在提交之后执行bzr pull时出现的,先uncommit,再pull就可以了.

  9. Restful API设计要点

    1 Restful API时面向资源,不能面向动作: 2 充分利用http协议的GET, HEAD, OPTION, PUT, POST, DELETE几种方法: 3 GET方法用于获取资源,是幂等和 ...

  10. 用递归方法求 n!

    #include <iostream> using namespace std; #define LL long long LL fac(int n) { LL f; || n == ) ...