在没安装OpenCV的电脑(Win7系统)上运行Release生成的opencv_test1.exe会报错。错误内容如下——无法启动此程序,因为计算机中丢失opencv_core231d.dll。尝试重新安装该程序以解决此问题。
由于报错的原因是因为一些DLL没有被加载,因此随程序附加上DLL看看可不可以解决这个问题。
使用vs2010中项目-属性-配置属性-链接器-输入 中的附加依赖项查看这个程序依赖哪些DLL。
[转]无法启动此程序,因为计算机中丢失opencv_core231.dll - juan3juan - juan3juan的博客
可以看出程序依赖于opencv_core231d.dll和opencv_highgui231d.dll,到OpenCV的安装目录中找出这二个DLL将其与我们的opencv_test1.exe放在同一目录,再运行。结果还是报错。错误内容如下——应用程序无法正常启动(0xc0150002)。请单击“确定”关闭程序。
到网上查了“应用程序无法正常启动 0xc0150002”的解决方法,有人说要下一个VC支持程序
不过安装后还是报错!!!!
再搜索下解决方法,原来OpenCV的DLL是分Debug和Release两种的,像opencv_core231d.dll这个文件名最后有个d说明这是Debug下生成的,不加d即opencv_core231.dll才是Release下生成的。
而且很明显Release生成的程序应该去加载Release生成的DLL,因此这个opencv_test1.exe应该去加载opencv_core231.dll和opencv_highgui231.dll。在项目配置中改下将《【OpenCV入门指南】第一篇安装OpenCV》中使用的
opencv_calib3d231d.lib opencv_contrib231d.lib opencv_core231d.libopencv_features2d231d.lib opencv_flann231d.lib opencv_gpu231d.lib opencv_highgui231d.libopencv_imgproc231d.lib opencv_legacy231d.lib opencv_ml231d.lib opencv_objdetect231d.lib opencv_ts231d.lib opencv_video231d.lib
换成
opencv_calib3d231.lib opencv_contrib231.lib opencv_core231.lib opencv_features2d231.lib opencv_flann231.lib opencv_gpu231.lib opencv_highgui231.lib opencv_imgproc231.lib opencv_legacy231.lib opencv_ml231.lib opencv_objdetect231.lib opencv_ts231.lib opencv_video231.lib
设置配置的方法见这里(可以参考《【OpenCV入门指南】第一篇 安装OpenCV》中的图示):
在VS2008中点击“项目”,再点击“属性”,依次展开“配置属性”--> “链接器”--> “输入”在“附加依赖项中”添加即可(Release)。
然后再将opencv_core231.dll和opencv_highgui231.dll放到opencv_test1.exe目录下。双击,已经可以成功运行了。
本文这种方法比较原始,规范一点的做法应该是作个安装包来发布程序的。安装包的制作比较复杂,肯定不是一篇两篇博客可以讲透彻的,大家可以搜索下“VS2008 安装与部署”。使用其它打包工具也是个不错的选择。
使用静态编译的方法也可以,不过这样生成的exe程序会比较庞大。可以参考:http://www.opencvchina.com/thread-1368-1-1.html
另外,如果出现了_cvtColor LNK2001: 无法解析的外部符号是库文件没添加造成的。 项目--》属性--》配置属性--》链接器-》输入--》附加依赖项 在其中加入所需库文件,同时在“链接器--》常规--》附加库目录”中填入相应库名。这样应该就可以了
vs2010中编译通过,但调试时出现“未使用调试信息生成二进制文件···”的问题 1。选择 配置属性->链接器->调试->生成调试信息 改为 是 2。选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI) 3。选择 配置属性->C/C++ ->优化->优化 改为 禁用(/Od) 4。选择 配置属性->C/C++ ->优化->全程优化 改为 否
Cannot find or open the PDB file in Visual Studio C++ 2010
最后出现了0x0000005的冲突 解决办法: 将OPENNI2的redist目录下的所有文件拷贝到release目录下即可
我的环境: WIN8 64位 VS2010 OPENNI2 OPENCV2.4.4
工程下载