vs2015+OpenVINO報錯解決:MKLDNNPlugind.dll,MKLDNNPlugind.dll

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章