如何在别人电脑运行自己项目?库的配置相关内容
一、前言
我们经常用一些库,像opencv库,Eigen库,GDAL库,有时候这些库的配置非常让人头疼。opencv库如何配置?自己的项目怎么在别人电脑上跑?exe运行报错,缺少xx.dll ?includ读取不到库?
网上有很多配置方案,但这些配置方案一般都是仅适用于自己电脑的,也就是说,自己的程序只能在自己电脑上跑。
但这样并不总是方便的。特别是对于以下场景:
- 要求你提交可运行的demo(exe文件)
- 要求你提交能够编译的代码
这就需要你清楚自己的项目该怎么配置,以达到对方能够直接运行你的程序或者接手你的项目能继续编写的目的。
二、库的文件介绍
具体详细的介绍,待补充,可以先查阅其他人的文章。
三、库加入项目
如何把库加入项目中(解决项目在不同电脑上重新配置的问题),以opencv为例:
1.包含目录设置
–1.1可以在项目目录下创建"Include"文件夹(里面存放一些库的头文件)
–1.2把opencv的include文件夹拷贝到项目目录的Include文件夹下
–1.3在VS中,属性管理器----Debug64属性页----VC++目录----包含目录,输入相对路径(以Debug64为例)
$(SolutionDir)\Include
$(SolutionDir)\Include\opencv2
$(SolutionDir)\Include\opencv
表示项目目录下的Include目录(相对地址),文件名可自定义;
2.库目录设置
–2.1首先先确定项目是动态库调用还是静态库调用,本项目采用的是静态库调用;跟建立时有关,也可以在下图看(示例项目并未用MFC,所以没显示)
–2.2在项目目录下创建一个"Libraries"文件夹,用于存放第三方库;
–2.3把opencv的库拷贝到项目目录的"Libraries"文件夹下,
opencv库路径范例是:D:\hopper\install\opencv\330v14\opencv\build\x64\vc14\lib
然后拷贝到项目目录的"Libraries"文件夹下,静态库很多,熟悉的人可以删除不需要的库,防止项目体积过大;
–2.4在VS中,属性管理器----Debug64属性页----VC++目录----库目录,输入相对路径
$(SolutionDir)Libraries
表示项目目录下的Libraries目录(相对地址),文件名可自定义;
3.修改附加依赖项
附加依赖项就是Libraries目录下库的名字,Debug版比Release版结尾多一个d,一般两个版本最好分别配置一下;
可以在网上找到相应版本进行删改,也可以在目录里面复制库的名字;
(一般最好把opencv没用到的库去掉,比如opencv最常用的core,highgui,imgproc;)
不熟悉的可以多做几次试验;
4.保存属性表(可选)
保存属性表,以便下次使用。
四、工程属性页配置
要在别人电脑上运行自己的项目,主要有两种方法:
1.静态链接
将库的源文件加到工程中一起编译,也就是说最后生成的可执行文件可以单独运行,不需要动态链接库。但缺点是生成的exe太大。
这里选择MTD。
- MT是静态链接release;
- MTd是静态链接debug;
- MD是动态链接release;
- MDd是动态链接debug
2.动态链接
就是将OpenCv安装目录下的bin目录下的*.dll文件与应用程序一起打包发布
五、提交给别人的文件示例
1.可运行程序
静态链接只需要exe,动态链接需要exe和dll;
若有输入文件,可放在一起
2.能够直接运行的代码
换电脑继续运行,需要有include头文件和静态库