使用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的地址等等。