一、VS配置第三方库

1、 .lib  .dll都是什么鬼


      大家使用的第三方库或者SDK时候,会发现其本质都是这三种类型的文件:a、头文件(.h),b、静态链接库文件(.lib)c、动态链接库文件(.dll)。

    1)头文件(.h)。大家知道,C++一般把函数声明都放在头文件中,如果你想使用我写的函数,你就需要引入我的头文件。否则你根本就不知道函数的名字。


    2)静态连接库文件(.lib)。引入了头文件,只有函数声明,没有函数实现,你还是用不了这个函数的,在VC下编译就会报一堆连接错误,原因就是没有找到函数实现。那么动态链接库和静态链接库说白了,就是函数实现。我们先说静态链接库,静态连接库分为两种,一种是只有个壳子(不包括函数实现的一些描述性信息,如函数起始地址等),另一种是完整的函数实现(这种是不需要动态链接库的)。不论哪一种,对于程序来说,都可以编译通过了,只不过第一种在程序运行时会报错(第二种不会),因为程序在跳转到函数入口时会出错(就像我告诉你一个假地址,你是不可能找到这个地方一样),这就需要了我们接下来要说的动态链接库了。


    3)动态链接库文件(.dll)。前面已经说到了,动态链接库文件就是函数的具体实现。他可以和静态链接库一起搭配使用,也可以不通过静态链接库使用(LoadLibrary函数)。这个文件是程序运行时需要的文件。

2、VS的配置项

    VS的配置都在解决方案的属性一栏中,本次我们讲的主要针对如何添加第三方库来进行配置。


    1)配置头文件。#include<...>搜索的是系统默认路径。我之前遇到了一个#include<iostream>找不到头文件的问题,一看属性发现系统默认路径让我去掉了。没有路径他肯定找不到了。#include"..."搜索的是用户指定的路径和当前路径。如果你想让你的vs知道相关的头文件,你就需要把头文件所在的路径配置进去。配置项为:属性->配置属性->VC++目录->包含目录。或者是属性->C/C++->常规->附加包含目录。注意,这两个配置项只需配置一个即可。  


    2)配置静态链接库。配置项:属性->配置属性->VC++目录->库目录,或者是:属性->配置属性->连接器->常规->附加库目录。我们把动态链接库的地址告诉了编译器,但是那个目录下可能有很多文件,他不知道去加载那一个文件,不想配置头文件是你指定了那个文件(#include"头文件名字"),所以我们还需要告诉编译器,我们的动态链接库的名字,配置项:属性->配置属性->连接器->输入->附加依赖项。配置内容:****.lib(静态连接库的全名)。

    3)配置动态链接库。这就扯淡了,都说了是动态链接库,配置个屁啊,只需将动态链接库和程序放在一起即可。(一定要放在一起,要不程序运行不起来的)

二、配置OpenCV环境

1、下载opencv


    我下载的是opencv-3.4.0源码,编译出来的库,包括32位和64位的Debug和Release版本,有需要的可以下载,只不过需要2积分,第一次写博客,不知道如何能免费,有点小尴尬。

https://download.csdn.net/download/hello_world_156_5634/10316498

 








2、配置

    我建议大家把opencv的文件和工程放在一起,填写的路径用相对路径,这样别人在用你的工程是就不用再配置opencv了。

    1)新建工程



建立个空项目。(空不空都无所谓,只不过空项目省心,没有乱七八糟的文件)



将项目改成Release
X64,(在属性->配置管理器中修改,没有X64新建一个)不改也行,只不过后面的配置要对应平台(win32/X64)(Debug/Release),动态链接库和静态链接库都要对应平台,名字末尾带“d”的对应Debug。

    



将opencv 文件移到工程目录下(OpenCV下)

新建个源文件。



 

配置包含目录,我的所有配置写的都是相对路径,如果想换机器或者创建一个新的工程,
直接复制整个工程就可以了,不用频繁的配置,虽说这样简便,但是我还是觉得大家应该学会如何配置。

 

 配置静态链接库





 配置附加依赖项(我之前用的是2.4.9版本,这版是3.4.0,这两版还是有区别的,一开始没有加最后一个静态链接库,提示找不到imread这个函数,后来加上这个库就OK了,原来3.4.0把imread函数放在最后一个库中了,如果大家不知道你要用的函数在那,最笨的办法就是全加上





 写代码:
#include <iostream> #include <opencv2\opencv.hpp> using namespace std; using
namespace cv; int main() { Mat img = imread("D:/1.jpg"); imshow("Hello OpenCV",
img); waitKey(); return 0; }
生成程序,然后找动态链接库(一定要注意和你生成的工程相对应。debug还是release)




运行就OK了




之前以为博客很好写,但是自己真正写的时候就发现眼高手低了,这点东西居然写了一下午,真是服气。希望这篇博客能够帮助到你吧。感谢阅读,Best wishes!



友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信