OpenCV (with VS2017)를 Release 모드로 실행하면 hdf5.dll을 찾을 수 없다는 문제에 대해
환경
증상
OpenCV3.4와 Visual Studio 2017에서 이미지 처리 프로그램을 짜려고 했던 곳.
Debug 모드 (x64)에서는 빌드 실행까지 문제없이 움직이지만, Release 모드로 한 순간에
빌드는 성공했지만, 런타임 에러가 되어 이하의 에러문을 출력되었다.
"hdf5.dll를 찾을 수 없어서 코드를 계속 실행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다."
고찰 (결과만 보고 싶은 사람은 날려주세요)
hdf5.dll이 없는 문제에 대해서, Release 모드로 소스를 컴파일해 링커로 dll과 결합할 때 hdf5.dll가 없다고 말해지기 때문에, 그럼 안직하지만 hdf5.dll를 찾아 해당 파일 구조에 짜넣어 하면 좋겠다고 생각했다. 조사하면 windows에서는 regsvr32.exe를 실행하여 .dll 파일을 등록할 수 있는 것 같다. hdf5.dll는 이전에 구축한 python 환경하에 있었으므로, copipe하고 등록해 보았지만, 잘 되지 않았다. 분명히 이것은 실수 같다.
새로 VC++ 프로젝트를 다시 만들고 OpenCV를 설정한 후 자동 출력된 Hello, World 프로그램에 OpenCV를 include하고 Release 실행했는데 비슷한 오류를 토했기 때문에 아마 소스 코드에 문제가 있는 것은 안돼.
같은 문제에 직면하고 있는 사람이 있었으므로, 링크를 붙여 둔다.
[2018-9-18. Getting the error : 'The code execution cannot proceed because hdf5.dll was not found' in Visual Studio 2015]
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 52387277 / 곁치 g ぇ- 에로 r ぇ- 코로 에에 쿠치 온 - 칸 tp - s의 t
링크처 코멘트란에서는 프로젝트 설정의 빌드 이벤트에 xcopy를 넣으라는 답변이 있었지만, 질문자는 python tool for visual studio 2015 설치하면 에러 토하지 않게 되었어요! 라고 말했다. 뭐야.
시도에 Visual Studio Installer에서 python 도구를 설치해 보았지만 역시 비슷한 오류였습니다. 그러나 소스에 문제는 없기 때문에 opencv의 cmake 빌드에서 다시 시도하기로 했다. 첫 cmake 빌드 구축 절차에서 잘못되었을 것이라고 예상했다. 그래서 다음을 참고로 파이썬 환경도 동시에 빌드하기로 했다.
[2016-01-05 OpenCV3.1 도입 with CMake]
htps //유메토도. 는 bぉ. jp/엔트리/2016/01/05/161620
결과
결론부터 말하면 무사히 Release, Debug 모드로 실행할 수 있었습니다.
원인은 Visual Studio측이 아니고, OpenCV를 CMake로 빌드할 때에 Python 환경을 정리해 빌드해 줄 필요가 있었다고 하는 것. c++ 버전을 빌드해야하지만 왜 파이썬? 라는 의문이 있었습니다만, OpenCV가 뒤에서 무엇을 하고 있는지는 모르기 때문에, 자세한 분은 감상이나 의견을 코멘트로 남겨 주면 기쁩니다.
다만, 이 기사를 쓰고 있는 시점에서 이미 OpenCV4.0.1이 릴리스 되고 있었으므로, CMake로 처음부터 빌드 한다면 이제 OpenCV4로 이행하려고 하고, 처음의 3.4가 아니라 4로 빌드하고 있기 때문에 주의하십시오.
코멘트나 의견, 질문등 있으면 부탁합니다. 도움이 되었다고 생각하면 좋겠다.
Reference
이 문제에 관하여(OpenCV (with VS2017)를 Release 모드로 실행하면 hdf5.dll을 찾을 수 없다는 문제에 대해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kamoshika/items/a039eaef7895405211d0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)