我的电脑为Windows10系统,原本安装上Visual Studiao2015 Pro版本,但不知何故经常无法链接到其他头文件的函数。因此我准备重新安装VS2015(原来的工程都是用VS2015建立并编译的)。
每次卸载Visual Studio2015都需要花费很长时间,需要从 控制面板——卸载程序中逐个删除包括IIS网页发布器、framework框架、各种包以及VS编译器。每卸载一次都需要花费近两个小时。
安装VS2015也需要花费挺长时间,基本版所占内存为12G,加上一些附属组建的话需要21G,一般需要两个小时。一来一回一个上午就没有了。
在安装成功后,打开Visual Studio2015,一直弹出 ”文件缺失,可以查看一个xml文件“。后来我才理解,这应该是VS没有卸载干净,我的VS使用的是原来备份的Ghost文件,有些文件可能在这个过程中有更改。后来,我在program file(x86)和program file中将所有的Visual Studio 和 VS 文件夹均卸载。为了防止有漏网之鱼,特意用 Everything 搜索了 ”visual studio“,并将 C 盘中所有符合的文件都删除,重启计算机。
接下来就是安装Visual Studio2017了。7zip挺好用,可以将一个文件夹压缩成好几个压缩文件;也可以将好几个压缩文件解压成一个文件夹。VS2017很大,但在百度云中下载很快,这次我挺百度。VS基本版只有8G,附加其他组建也只有10G,比VS2015精简了很多。安装后在控制面板中也只有少数几个安装程序,比起VS2015简直就是一股清流。安装好后特意选了几个头文件及函数测试了一下,无法链接的问题完美解决。
我的根本目的其实是做托盘识别,这里需要用到点云数据和彩色图像,因此需要配置 PCL 库和 OpenCV 库。
先介绍OpenCV库。OpenCV现在已经到4.1版本(2019年7月),所以还是用最新的比较好。不同版本的VS使用的二进制 OpenCV 库是不同的,目前只支持 vc14(VS2015) 和 vc15(VS2017)。特别需要申明一点,opencv库从官网上或者是github上下载非常慢,简直比蜗牛还慢,并且往往掉线,所以最好是备份到百度云,以便下一次使用。
pcl1.8.0 库是支持Visual Studio2015的,pcl1.8.1 库是支持Visual Studio2017的。所以我需要重新安装 pcl1.8.1库。下载pcl1.8.1(非常慢并且经常容易断网,建议备份到百度云),安装后在系统环境path中添加bin的路径。
通过在 VS2017中新建属性表且命名为 ”OpenCV4.0.0&VS2017Debugger.props“ 和 ”OpenCV4.0.0&VS2017Release.props“ 构建通用的OpenCV属性表,以后导入到其他工程就非常方便。
通过在 VS2017中新建属性表且命名为 ”PCL1.8.1&VS2017Debugger.props“ 和 ”PCL1.8.1&VS2017Release.props“ 构建通用的PCL属性表,以后导入到其他工程就非常方便。
经测试后发现配置完全正确,然后将这四个 .props 文件备份到 Configuration 文件夹中。
我所使用的摄像头来自图漾科技,github上有一个工程文件为camport3-master。为了采集Point-3D,需要使用内置的 .../Samples/Common/freeglut 库。这个库首先需要用 cmake 程序进行编译,生成 VS2017工程。然后利用VS2017将这个工程 .dll 和 .lib 库。然后将生成的 .lib库加入到工程的属性表中(动态链接库.dll文件可以直接放置在生成的可执行目录下,我的为D:WorkspacesvisualStudio2015camport3-mastersampleuildinDebug 目录)。
由于工程编写的程序用的是opencv3版本,我配置的版本为opencv4,所以发现了一些不同:
【1】CV_RGB2GRAY(opencv2)、COLOR_RGB2GRAY(opencv3、opencv4(不确定),并且需要添加头文件 #include<opencv2/imgproc/type_c.h>来解决)
【2】opencv3与opencv4之间的一些宏定义存在改动,有些宏的名称被改为其他名称
此外还有一些其他问题,如
【3】在自定义输出流 out 时,出现 "std::ofstream locationOut;不允许使用不完整的类型 "的错误,原来是 #include <iostream> 和 #include <fstream>漏掉了
【4】编译时出现 LINK Error,无法查找指定函数。这时需要将 .cpp 文件手动添加到工程的 源文件中。
【5】VS2017不包括 SDK8.1,但本工程需要使用 SDK8.1,所以需要在安装时需要勾选 “使用 C++ 的桌面开发 —— Windows8.1 SDK 和 UCRT SDK”,然后安装即可。
【6】Debugger 和 Release 的 .lib 库文件是不同的。