Qt、opencv程序在别人电脑上运行

来源:互联网 发布:腾讯程序员待遇 编辑:程序博客网 时间:2024/06/11 18:53

用Qt+opencv写了个简单程序,却发现无法直接在别人电脑上运行,照着网上的方法试了很多,终于成功了。。。

首先是Qt程序,用Qt creator在release模式生成一个最简单的界面后,将release文件夹拷到别人电脑上点击exe文件,提示缺少dll文件,如是根据提示将缺少的dll文件一个个添加到exe文件目录里,总共需要的dll文件如下:

Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
icudt53.dll
icuin53.dll
QTdll\icuuc53.dll

添加qt相应的dll是要注意程序所使用的QT版本,在qt creator工程界面下可以看到工程所使用的版本:

 

因本人电脑上装有多个不同Qt版本,导致开始拷DLL文件时时找错bin路径,一定要在相对应版本的bin路径下拷dll文件!

拷完DLL文件,结果还提示无qt平台,又在百度苦苦搜索。。。终于在百度文库(http://wenku.baidu.com/link?url=GLRTGqhKA8M7HEY-v6K5VDRHru-FHo1Mqt1oY7O_ztdW_Ksw3TS9dKe38TCJNRVREmMi55CoXhYh6eJwUrb_jLNYL8mwJjETfnVRtwaZOjG)里看到一处要accessible 和 platforms 两个文件夹没有找到accessible文件夹,不过将platforms文件夹复制过去后程序就可以运行了,之后尝试发现这个文件夹只需要qwindows.dll这一个文件就可以了,不过还是要以文件夹方式放在release目录里。

opencv程序只需将相应DLL复制到release目录即可,即F:\opencv\opencv\build\x86\vc11\bin路径下用到的DLL文件,如果全部用到,则完整文件如下:

opencv_imgproc249.dll
opencv_legacy249.dll
opencv_ml249.dll
opencv_nonfree249.dll
opencv_objdetect249.dll
opencv_ocl249.dll
opencv_photo249.dll
opencv_stitching249.dll
opencv_superres249.dll
opencv_video249.dll
opencv_videostab249.dll
opencv_calib3d249.dll
opencv_contrib249.dll
opencv_core249.dll
opencv_features2d249.dll
opencv_ffmpeg249.dll
opencv_flann249.dll
opencv_gpu249.dll
opencv_highgui249.dll

将opencv与Qt需要的文件都拷到工程的release目录下即可,另外,如果目标电脑没装VS,还需要两个文件,如工程在我的电脑上编译环境是VS2012,则在我的电脑VS安装路径下搜索出

msvcp110.dll
msvcr110.dll

两个文件复制过去即可。

 

过程中还发现一个问题,在QT的main函数里写了显示一幅图片用来测试

    Mat img = imread("view.jpg");    imshow("Test",img);

图片放在路径D:\Qt\QtProjects\Work\build-Work-msvc2012_opengl-Release下,在qt creator里点击运行图片显示正常 ,但点击exe文件时却出现错误,最后将图片复制到D:\Qt\QtProjects\Work\build-Work-msvc2012_opengl-Release\release路径下直接运行exe文件才正常,原来这两种方式所查找的当前目录路径不一样。。。

网上还有关于qt和opencv的静态编译,现在发布的opencv都有了staticlib,步骤应该简单些,不过试了好多次都失败,因现在不急使用,就先放一放,等下次配置成功后再回来记录。

1 0