0、一个项目的结构:主函数文件+第三方依赖库,第三方依赖库一般包含有头文件、Release和Debug的库(windows:.lib,linux:.a)、Release和Debug的运行库(windows:.dll,linux:.so)。编译一个库的时候,需要告诉编译器当前编译库的依赖库的头文件目录。编译主函数文件且链接生成可执行程序时,需要告诉编译器主函数依赖库的头文件目录,可执行程序依赖库的库目录、依赖库的库名称。运行可执行程序的时候,需要指定可执行程序依赖的第三方运行库路径。在linux下一般使用Makefile来管理编译整个项目源码,在windows下则使用IDE集成软件管理项目,如vs2015。当然linux和windows下还有很多IDE集成软件来管理项目。
1、安装vs2015。
2、新建一个工作目录如:D:\work\opencv
3、下载opencv330_x64_vc14的库和头文件。
在工作目录下新建一个文件夹来存放opencv的头文件和库如:D:\work\opencv\Opencv330
下载地址:
官网:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.3.0/opencv-3.3.0-vc14.exe/download 将下载的exe文件直接解压,将会得到源码、及一些库,这里只需要opencv330_x64_vc14的库和对应的头文件。将include和x64目录拷贝到D:\work\opencv\Opencv330目录下。
4、打开vs2015
新建一个空白解决方案,位置选择我们的工作目录,名称为Project。
在解决方案里新建一个项目。项目选择visualc++ Win32控制台应用程序,名称为Main的空项目。
在我们的工作目录下新建一个目录Main,在Main目录下新建一个main.cpp文件,然后直接将main.cpp文件拖到Main项目的源文件里。
编辑main.cpp
#include
#include "opencv2/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;
void showImg()
{
char* imageName = "test.jpg";
Mat image;
//read image
image = imread(imageName, CV_LOAD_IMAGE_COLOR);//读取图片
if (!image.data)
{
printf("Error loading image \n");
return ;
}
//create window
namedWindow(imageName, CV_WINDOW_AUTOSIZE);
//show image
imshow(imageName, image);
//save image
imwrite("testbak.jpg", image);
//0:wait key
waitKey(0);
return ;
}
int main(int argc, char** argv)
{
showImg();
return 0;
}
注意:main.cpp里将要读取一张test.jpg的图片并且显示它,然后再备份一张testbak.jpg图片。所以需要将一张test.jpg图片放到我们的Main工程下
至此,我们的工作目录和vs工程如下图:
接下来需要配置Main项目的头文件依赖目录,因为我们的main.cpp依赖opencv,所以需要将opencv的头文件目录添加到项目中,右击Main项目,属性,配置选择所有配置,平台选择x64。然后选择VC++目录,包含目录,编辑,找到我们工程目录下的Opencv330的include目录,然后使用宏SolutionDir来替换绝对路径,这样工程拷贝到其他电脑也是可以直接打开使用的。
然后设置Main项目的库依赖目录及库输入项
Release和Debug的库依赖目录是一样的,所以配置选择所有配置,见图:
Release和Debug的输入的附加依赖项是不一样的,一般第三方库都会提供Release版本和Debug版本,Debug版本的库的名字只是在Release版本的库的名字后面加一个d。
注意:这里还加了一个系统库legacy_stdio_definitions.lib,是为了解决标准库找不到的问题,没有这个库,printf可能链接不通过。
接下来,生成解决方案就可以生成可执行程序了。但是运行可执行程序还需要依赖的dll。下面设置opencv依赖的dll路径,手打的话别忘了最后的一个分号。
至此配置完成,点击本地Windows调试器执行程序,显示图片,然后在Main工程目录下会生成一张testbak.jpg图片。
如果想在工作目录中找到可执行程序运行的话,需要将所需的dll拷贝到可执行程序exe的当前目录下,并且如果拷贝了dll到exe目录下,则vs工程配置里就不需要设置dll路径了。
附:工程下载地址:http://pan.baidu.com/s/1gfgn1Az
至此,vs2015使用第三方库基本就是这个流程。
vs2015新建一个库,指定库的依赖头文件,库的输出路径及输出名的配置可以研究一下,后面有机会再讲解。