使用OpenVINO时,报出以下错误:
Failed to create plugin xxx\intel64\Debug\MKLDNNPlugind.dll for device CPU
Please, check your environment
Cannot load library 'xxx\intel64\Debug\MKLDNNPlugind.dll':
折腾过卸载vs2015,重装vs2017,卸载重装OpenVINO,瞎折腾一番,都没有解决问题。。。原因不在这里。看下面。。。
新建一个vs工程,把openvino配置进去进行测试,如进行人体骨骼检测。
1)配置属性文件
Release:
附加包含目录:【注意配置自己的路径】
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\pose_estimation\include
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\common
C:\Program Files (x86)\IntelSWTools\openvino\opencv\include
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\include
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\common\monitors
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\thirdparty\gflags\include
附加依赖项:【注意配置自己的路径】
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_highgui420.lib
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\lib\intel64\Release\inference_engine_c_api.lib
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\lib\intel64\Release\inference_engine_nn_builder.lib
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\lib\intel64\Release\inference_engine.lib
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\thirdparty\gflags\lib\Release\monitors.lib
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\thirdparty\gflags\lib\Release\gflags_nothreads_static.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_videoio420.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_imgcodecs420.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_imgproc420.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_core420.lib
pdh.lib
shlwapi.lib
Debug:【注意配置自己的路径】
附加包含目录:
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\pose_estimation\include
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\common
C:\Program Files (x86)\IntelSWTools\openvino\opencv\include
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\include
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\common\monitors
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\thirdparty\gflags\include
附加依赖项:【注意配置自己的路径】
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_highgui420d.lib
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\lib\intel64\Debug\inference_engine_c_apid.lib
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\lib\intel64\Debug\inference_engine_nn_builderd.lib
C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\inference_engine\lib\intel64\Debug\inference_engined.lib
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\thirdparty\gflags\lib\Debug\monitors.lib
E:\6.ActionRecognition\HumanSkeleton\code\c++\lightweight_openpose\openvino\pose_estimation\thirdparty\gflags\lib\Debug\gflags_nothreads_static.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_videoio420d.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_imgcodecs420d.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_imgproc420d.lib
C:\Program Files (x86)\IntelSWTools\openvino\opencv\lib\opencv_core420d.lib
pdh.lib
shlwapi.lib
2)报错:
在属性,c/c++,预处理器中添加:_CRT_SECURE_NO_WARNINGS
3)在属性,c/c++,常规,SDL检查,选择为:否。
4)报错:
当前工程只支持Unicode字符,不支持多字节,此时如果代码中出现多字节字符串, 就会报错。LoadLibrary 函数有两个版本,一个LoadLibraryW 针对Unicode版的,一个是LoadLibraryA 针对Multi-Byte(多字节)版的,它们通过不同的宏定义区分开,根据定义的宏会使用不同的函数版本。当使用UNICODE字符,就等于预设了_UNICODE、UNICODE宏,所以编译时就会使用LoadLibraryW。
解决:属性->配置属性-->常规--->字符集---->使用多字节符字符集。
5)编译成功,Debug下可正确运行,release下报错:
无法定位程序输入点,@tbb@YAXPEAH@Z于动态链接库:xxx/Release\MKLDNNPlugin.dll上【这个错其实和开头所写的是一致的,还是环境变量的问题】。
解决方法:
a)点击左下角win键,点击“所有应用”,打开VStudio command prompt("x86 Native Tools Command Prompt for vs2017",测试发现使用下面红框中的几个均可以,vs2015也没问题)
b)进入目录:cd C:\Program Files (x86)\IntelSWTools\openvino\bin\
执行:setupvars.bat【一定要有这步,不然还是报相同的错】
注意,查看setupvars.bat中的是Debug还是Release,这里不需要修改,Debug与Release的路径都有。
c)运行:devenv /UseEnv
打开vs界面,然后打开上面的工程。
这样操作会使用setupvars.bat中的环境变量启动Visual Studio,然后配置参数运行,完美结果。
系统自带的cmd就是运行cmd.exe
vs的开人人员工具命令行则会初始化很多环境变量,比如可以方便的找到编译器,连接器和include,lib的地址等等。