文章目录
- 未为opencv_word341d.dll加载任何符号
- MFC对话框下cv::waitKey()无用问题
- 不存在从CString到LPCSTR的适当转换作业
解决使用MFC+OpenCV过程中产生的问题
未为opencv_word341d.dll加载任何符号
毕业设计要求使用MFC+OpenCV设计界面,使用的平台是VS2017,OpenCV版本是3.4.1。
- 使用MFC对话框控件打开视频文件总是失败,后使用
.cpp
文件调试发现报错无可用信息,未为opencv_word341d.dll加载任何符号
,所以打开视频失败,然后就猜测可能是环境设置问题,又重新检查每一步环境设置最终在环境变量path
中未配置动态链接库所以出错。所以要仔细检查看问题出在哪里。 - OpenCV文件组成
- VS中使用OpenCV调用的是①bin文件:
opencv_ffmpeg341.dll
,视频编解码软件②include文件:包含.h
等头文件 - x64文件=bin文件
(opencv_world341d.dll)
+ lib文件(opencv_world341.lib)
,其中vc14对应VS2015,vc15对应VS2017
- OpenCV配置:
- 配置Path系统环境变量:此电脑–>右键“属性”–>高级系统设置–>环境变量–>系统变量中的path,在变量值里面添加相应的路径;
D:\opencv\opencv\build\x64\vc15\bin
(配置动态链接库,注意自己的路径) - VS2017中配置OpenCV
- 菜单栏中点击
视图
->属性管理器
,即打开属性管理器工作区;工程中右击
–>属性
- 包含目录配置:
VC++目录
—>包含目录
:D:\opencv\opencv\build\include
D:\opencv\opencv\build\include\opencv
D:\opencv\opencv\build\include\opencv2
- 目录配置:
VC++目录
—>库目录
:D:\opencv\opencv\build\x64\vc15\bin
- x64表示电脑是64位,32位选择x86
- vc10表示VS是2010,vc11对应VS2012,vc12对应VS2013,vc14对应VS2015 ,vc15对应VS2017
- 链接器配置:
链接器
–>输入
–>附加依赖项
- debug:
opencv_world341d.lib
- release:
opencv_world341.lib
- 若执行时出现找不
opencv_world320d.dll
,就把自己opencv文件目录下的D:\opencv\opencv\build\x64\vc15\bin
中的三个dll文件,拷贝到C:\window\System32
和C:\window\SysWOW64
中
MFC对话框下cv::waitKey()无用问题
cv::waitKey()是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用。在MFC环境下,这个函数不起作用。所以为了起到延时的作用使用了Sleep函数,经过测试当参数为50ms,即Sleep(50),视觉效果最佳。或者利用WM_TIMER消息进行处理即可正常播放。
不存在从CString到LPCSTR的适当转换作业
使用LPCSTR函数进行转换时报错,这是使用字符集的问题,可以在右击项目属性
->字符集
->使用多字节字符集
即可解决